'프로그래밍대회입문가이드'에 해당되는 글 1

  1. 2022.04.17 [IT] 알고리즘 트레이닝: 프로그래밍 대회 입문 가이드

< 알고리즘 트레이닝 > | 안티 라크소넨 지음 | 조승현, 김진현 옮김 | 인사이트

 

이 책은 프로그래밍 대회를 위한 프로그래밍에 대해 체계적으로 설명하는 책이다. 저자는 핀란드 정보 올림피아드 주최자 중 한 명으로 활동했으며 발틱 정보 올림피아드 학술위원장으로 활동했다. 또한 여러 국제 프로그래밍 대회에 참석한 핀란드팀을 지도하는 등 프로그래밍과 알고리즘 지도 경험을 다수 가지고 있다.

프로그래밍 대회에 나오는 문제는 일반적으로 잘 공유되지 않기 때문에 제대로 정리된 자료를 접하기 힘들다고 한다. 그런 측면에서 이 책은 활용하기 좋은 프로그래밍 기법과 최신 트랜드, 대회에서 유용한 트릭 등 다양한 주제와 난이도를 가진 알고리즘과 정보를 제공하고 있는 것 같다.

프로그래밍 대회는 알고리즘 설계와 구현이라는 두가지 주제를 함께 다룬다. 알고리즘 설계는 잘 정의된 계산 문제를 풀어내는 효율적인 알고리즘을 만들어내는 것이다. 알고리즘을 설계하는 데는 문제 해결 및 수학 능력이 필요하며, 잘 알려진 기법에 새로운 통찰을 덧붙여야 문제를 풀어낼 수 있다. 설계 이후 구현된 것은 몇가지 테스트 케이스로 테스트하는 방법을 사용한다. 알고리즘 구현을 위한 언어는 C++, Python, Java 등을 주로 사용한다.

2장에서는 C++ 프로그래밍 언어의 특성에 대해 살펴보고 다양한 연산에 대한 예제를 살펴본다. 만약 C++ 언어에 익숙하다면 건너뛰어도 무방한 것 같다. 3장에서는 알고리즘 효율성에 대한 개념과 관련된 알고리즘 설계 예를 설명한다. 일반적으로 시간복잡도로 언급되는 개념과 예제 코드를 통해 시간복잡도를 계산하는 방법을 소개한다. 또한 최대 부분 배열 합 알고리즘과 두 퀸 문제를 통해 알고리즘별 시간복잡도를 계산한 예를 보인다. 이어 코드 최적화 측면에서 컴파일러 최적화와 프로세서의 특징을 설명하면서 코드의 속도를 향상시킬 수 있는 방법을 소개하고 있다.

나머지 4장부터 14장까지는 정렬과 탐색 관련 알고리즘부터 문자열 알고리즘까지 다양한 알고리즘에 대한 설명과 구현 방법을 제시한다. 특히 각 알고리즘에 대한 개념 설명이 자세히 되어 있어서 자료구조 및 해결을 위한 알고리즘을 보다 이해하기 쉽게 도움을 주고 있다. 마지막 15장에서는 고난도 주제 파트로서 고급 알고리즘 및 자료 구조 몇가지를 제시한다. 제곱근 기법에 대한 문제 해결 방법, 구간 트리에 대한 문제 해결 방법, 트립에 대한 문제 해결 방법 등 여러 주제에 대한 설명과 해결 방법, 구현 방법 등을 잘 설명하고 있다.

 


이 책의 핵심은 이러한 다양한 알고리즘을 이해하고 해결하는 벙법을 익힘으로써 보다 다양한 문제를 효율적으로 해결할 수 있는 능력을 키우는 것이다. 조금 어렵게 느껴질 수 있지만 문제 해결을 위한 방안을 이해하고 분석하는 것만으로도 한층 알고리즘에 대한 이해와 해결방법에 대한 구현에 대해 깊이있는 경험을 얻을 수 있으리라 생각한다.

다른 한편으로 책의 번역이 잘 되어 있어서 책을 읽는데 아무런 무리가 없었다고 생각한다. 가끔씩 번역서를 읽다보면 번역이 매끄럽지 못한 책이 종종 있는데 이 책은 그런 걱정은 없이 편하게 읽을 수 있다.

이전 1 다음