본문 바로가기
감상/서평

알고리즘 프로그래밍 대회 입문 가이드 트레이닝 2판 (Guide to Competitive Programming 2/E Learning and Improving Algorithms Through Contests - Antti Laaksonen

by 사향낭 2022. 4. 22.

출판사 인사이트에서 본 도서를 지원받았습니다.

 

 

알고리즘 트레이닝

실전 알고리즘 공부법!민간전승되던 고급 기법에서 최신 트렌드까지『알고리즘 트레이닝: 프로그래밍 대회 입문 가이드』는 오늘날의 경진 프로그래밍에 관해 종합적으로 설명하고 있는 책이

book.naver.com

 

 

처음 책을 택배로 수령하고 목차를 훑어보고는 웃음이 지어졌습니다.

 

흔히 종만북으로 알려진 유명한 알고리즘 도서 '알고리즘 문제 해결 전략'보다 이 책이 다루는 알고리즘 주제가 더 폭넓은 것에 반해 책의 두께가 너무 얇아 보였기 때문입니다.

('알고리즘 문제 해결 전략'은 천여 page 책 두 권이 세트, 이 책은 352 page입니다.)

 

그래서 이 얇은 책이 이렇게나 방대한 주제를 다루는 것이 가능한지 의문을 가진 채 책을 읽기 시작하였습니다.

 

 

책을 읽으며 느낀 점은 정말 알짜 지식들을 압축해서 담았다는 것입니다.

 

가장 앞에서 나오는 라이브러리 "bits/stdc++.h"의 사용이나 입, 출력에 관한 trick, 매크로에 관한 이야기들은 경진대회를 준비하는 사람들에게 어떤 문제를 풀던 공통적으로 유용하게 쓰일 팁들입니다.

(요즘 대회에서도 대부분의 사람들이 당연하다는 듯 쓰고 있습니다.)

 

시간 복잡도나 알고리즘에 관한 설명들은 수학적 엄밀함을 보여주지는 않지만 어떠한 목적으로 이 알고리즘을 사용하는지에 대해 간결하고 세련된 코드로 보여줍니다.

 

개인적으로 segment tree를 bottom-up으로 구현해놓은 코드가 인상 깊었습니다.

(제가 찾아본 대부분의 자료가 top-down 방식이었기에 bottom-up 코드를 읽으며 어떻게 이렇게 짤 수 있는지에 대해 혼자 생각해볼 수 있었습니다. 물론 코드에 대한 설명은 불충분합니다.)

(bottom-up 방식의 segment tree 코드에 대한 설명은 이 포스트를 참조하셔도 좋을 것 같습니다.)

 

증명을 제외해버렸다는 점에서는 호불호가 갈릴 수 있지만 저는 만족하였는데 결국 책의 설명이 부족하다고 느낀다면 요즘에는 인터넷을 찾아보면 되는 일이기 때문입니다.

(wikipedia, geeksforgeeks, youtube 등 설명을 잘해놓은 자료들이 많습니다.)

 

하지만 지면상의 문제로 너무 많은 것들을 생략하였기에 이해가 쉽사리 되지 않는 부분들이 있다는 점은 살짝 아쉬웠습니다.

 

그리고 책에서 언급하는 CSEC라는 알고리즘 문제 사이트가 있는데 '알고리즘 트레이닝'이라는 책처럼 특정 알고리즘과 관련된 문제들을 나열하였으면 책을 읽으며 공부하기에 더 좋을 것 같다는 생각이 들었습니다.

(백준에서 알고리즘 분류에 따라 문제들을 볼 수 있는 기능이 지원되니 그냥 백준 쓰는 게 좋아 보입니다.)

 

 

책의 장점은 확실합니다.

 

실제 대회에서 쓰이는 방대한 종류의 알고리즘, tequnique들을 맛볼 수 있으며, 제공되는 코드가 깔끔하다.

 

 

따라서 이런 분들께 추천드리고 싶습니다.

 

- 알고리즘을 어느 정도 이해하고 있는 사람들.

 

- 문제 해결을 위해 알고리즘의 스펙트럼을 늘려야 할 필요가 있는 사람들.

 

- 인터넷을 통해 혼자 검색하고 정보를 찾아볼 수 있는 사람들.

 

- 어떤 알고리즘들이 있었는지 기억을 되새기고 싶은 사람들.

 

- 알고리즘 경진 대회에 관심이 있는 사람들.

 

 

장단점이 있지만 대회에 쓰이는 실용적인 알고리즘들을 정말 많이 담은 훌륭한 책입니다.

 

문제 해결 능력을 기르려면 결국에는 많은 문제들을 풀어봐야겠지만 문제를 풀기 위한 지식들을 쌓기 위한 목적으로는 아주 좋은 책이라고 생각합니다.

댓글