알고리즘 문제 해결 전략(종만북)은 2012년에 나왔고, 내용 대부분은 2011년에 작성됨.

이 책이 발매되던 시절에 이 책은 여러 가지 면에서 독보적인 책이었는데, 10년이 지난 지금은 많이 다르긴 하다. BOJ처럼 여러 모로 강력한 저지나 solved.ac같은 분류 체계도 존재하지 않았지. CF는 당시 베타였고.

10년 전에 특히 좋았던 부분들을 언급하면 이러함.

  • 국내에서 문제풀이를 종합적으로 다루는 서적이 거의 없었다

지금은 더 많이 나왔는데 2012년에는 정말 뭐가 없었음. 그래서 ‘읽고 공부할 수 있는’ 책들 중에서는 이 책이 제일 좋았다. 이거 말고 다른 책 찾아보면 대학 교재이거나 정말 기초적이거나 단편적인 내용만 다루거나 해서 볼만한 게 없었음.

  • 저자가 직접 고르고 테스트해서 저지에서 돌릴 수 있는 연습문제가 약 90문제

전통적인 문제에 데이터만 넣은 것도 있고 알고스팟 대회에서 썼던 걸 가져온 것도 있고 그 외에는 창작.

당시엔 다들 PKU나 UVA같은 오래된 외국 저지에서 공부하거나 함. 당시에는 뭐가 좋은 문제인지 알아보는 것도 대단히 어려운 일이라 좋은 연습문제 목록을 가지고 있는 것만으로 경쟁력이 생기는 시대였다.

이것보다 많은 문제를 다루는 책은 비슷한 시기에 ‘Programming Challenges’ 정도임. 근데 그 책은 약간 ‘수능 500제’같은 느낌이다.

그리고 시간이 지나면서 몇가지 문제가 쌓이는데

  • 알고스팟 저지가 오래됨

자주 터지고 성능도 별로고 뭐 그런 문제. 대형 저지로 옮기면 좋을것같다고 나는 생각하긴 하는데 옮기는 게 간단히 되는 건 아니니까.

  • 연습문제 부족

내가 여러 사람들에게 문제를 풀게 해보면서 느낀 게 주제 하나에 익숙해지려면 열 문제는 풀어야 함. 3문제씩 수록하는 게 얼마나 대단한 일인지와 상관없이 3문제는 부족하다는 거지.

이건 공부 환경이 점점 좋아져서 좋은 문제를 찾기 쉬워지면서 아쉬워지게 됨. 요즘은 10년 전과 다르게 solved.ac에서 ‘그래프 탐색’으로 검색하면 좋은 그래프 탐색 문제가 쭉 나온다고. 문제 번호로 구글에서 검색하면 해설도 잘 나옴.

챕터별로 괜찮은 연습문제를 많이 추천하는 프로젝트를 내가 사이드로 진행하고는 있는데 나도 그렇게 여유가 많지 않아서 이거 언제쯤 업로드할지 모르겠다.

  • 책의 가치가 떨어짐

10년밖에 안 됐지만 그 때와 지금은 정말 많이 다르다. 그때쯤 나는 3kg짜리 랩탑이랑 전공책 두권 가방에 넣고 다녔는데.. 하아.. 젊음이란..

그 때와 달리 나는 지금 어댑터까지 합쳐도 1kg 내외인 서피스를 들고 동네 카페에서 이걸 쓰고 있다. 요즘 공부자료를 구하는 입장에서 베개만큼 두꺼운데 Ctrl+F로 검색도 안되고 코드 복사해서 써보려면 알고스팟 들어가서 압축파일 풀어야 하는 건 좀 별로지.

나도 요즘 “이런건 수학적으로 어떤 방향으로 접근하도록 설명하면 좋을까”라는 의문이 생길 때 국내 블로그들이나 E-Maxx같은 외국 사이트를 자주 보는데 검색이 되고 코드를 복사할 수 있다는 건 정말 큰 이점이다.

  • 다루는 내용이 오래됨

이건 주로 고급 주제 쪽 문제. 당시에 자주 다루지 않았지만 요즘 자주 쓰는 주제 업데이트가 밀려 있음.

이 부분에 대해서는 최근에 자주 언급되는 몇 가지 주제에서 대해서(Lazy Seg, FFT, Flow 등)는 확실히 보강이 필요하다고 생각함.

그 외에 ‘난이도:루비’ 이상에서 나오는 그런 알고리즘들은 ‘그런 걸 1000쪽짜리 책에서 다뤄야 할까’ 라는 느낌이긴 하다.

  • 코딩 테스트 수요

이건 복잡한 문제. 이 책이 발매되는 당시에는 코딩 테스트가 유행하기 한참 전이라 당연히 다 대회 나갈 생각 하고 공부한다고 가정하고 쓴 책이다. 집필부터 검수까지 대회에 나갔던 사람들이 주로 기여했고, 책의 추천사를 쓴 사람들도 다 대회에 나왔던 사람들이다.

그리고 코딩 테스트는 대회와 다른 연습이 필요하다. 코딩 테스트는 가능한 적은 지식을 기반으로 구현 위주로 문제가 나온다. 복잡한 자료구조나 수학적 개념은 다루지 않기 때문에 책이 다루는 주제들과 많이 다르다. 완전 탐색, 그래프, 시뮬레이션 문제가 많이 나오는 편이다.

가장 심각한 문제가 되는 부분은 DP. DP는 종만북 초반부에 ‘초보자를 위한 커리큘럼’에도 먼저 공부하라고 적혀 있는 부분이다. 경시대회를 준비한다면 당연한 일이다.

DP는 수학적 사고가 익숙하지 않은 사람들에게 대단히 어려운 분야다. 그 전까지 경시대회 하던 사람들은 종만북의 DP 파트를 보고 대단히 좋은 설명과 코드라고 극찬했다. 그런데 그 사람들은 밥 먹고 수학만 한 사람들이다. 수학적인 기초가 부족한 사람들은 코딩 테스트 공부를 시작하면서 ‘알고리즘 분야는 이 책이 유명한데 하나 사 볼까’ 라고 생각하고 이 책을 산다. 그리고 수학적인 사고와 점화식을 당연한 것처럼 다루는 경시대회 준비하는 사람들이나 따라갈 법한 전개를 보고 이건 내 길이 아닌가 보다 하고 그만두는 것이다. 10년 전에는 고민할 일이 아니었던 초반부 러닝 커브가 지금은 꽤 큰 문제가 되어 있다.

  • 2판 언제 나오죠

이건 솔직히 읽고 계신 분께서 지금부터 알고리즘 공부를 시작해서 책을 쓰기 시작해도 종만북 2판보다 빨리 출판할 수 있을 겁니다.

이렇게 아쉬운 점들이 쌓이고 있는데 책은 여전히 좋다고 생각한다.

문제 풀이를 오래 공부할 생각이면 어차피 이것저것 많이 읽게 되는데 이것도 한 권쯤 사서 보는 거 좋다고 생각함.

아직 이게 내가 할 공부인지 아직 잘 모르겠으면 프로그래밍 언어에 대해 공부하면서 기초 문제들부터 풀어보자. 예를 들어서 이런 거(solved.ac CLASS 1): https://solved.ac/search?query=in_class:1

코딩테스트 준비할 거면 기출문제를 많이 풀자. 종만북 산다고 해도 나는 안 말리지만 ‘이거 왜 안 풀리지’ 싶으면 혼자 붙들고 있지 말고 얼른 다른 사람에게 물어보자. 그리고 어느 정도 개념이 잡힌 것 같으면 solved.ac에서 비슷한 문제 찾아서 잔뜩 풀어보자.

이 글을 작성하며 정리하는 내용들은 위에서 언급한 사이드 프로젝트(챕터별 적당한 문제 추천)를 진행하는 데에 도움이 될지도 모르겠다.

도움은 모르겠고 내가 옛날 사람이라는 것만 알겠다. 이 분야는 10년쯤 지나면 모든 게 달라진다는 것도. 나는 2012년에 알고리즘 그만뒀다가 2019년에 다시 시작했으니 대충 시간여행자 같은 입장이라고 치자. 아무튼 역사적으로 이렇고 이런 장단점이 있으니 사고 싶으면 참고하라고.

qOygkOydtCDsnojsnLzri4gg7IKs6rOgIOyLtuycvOuptCDssLjqs6DtlZjrnbzqs6AuPGJyPg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;">