728x90
반응형

 

 

 

한빛미디어에서 출간된 "똑똑한 코드 작성을 위한 실전 알고리즘" 책은 해결하고자 하는 문제를 다양한 시각으로 풀어내는 능력을 키워내고, 효율적으로 소프트웨어를 개발할 수 있도록 하는 알고리즘을 꼼꼼히 기초부터 설명하여 실전에 잘 적용할 수 있도록 설명해냈다. 그렇기 때문에 프로그래밍을 어느정도 아는 사람을 독자로 삼았고, 파이썬 기반으로 알고리즘 개념들과 실전 문제들을 설명한다. 

 

알고리즘은 예측 가능한 시간에 정확한 결과를 반환하는 컴퓨터 프로그램으로 구현된 단계별 문제 해결 방법이라고 한다. 알고리즘 연구는 정확성(해당 알고리즘이 모든 입력에 대해 동작하는가?)과 성능(해당 알고리즘이 주어진 문제를 해결하는 데 가장 효율적인 방법인가?)를 고려해야한다고 한다. 책에서는 총 8가지 챕터로 나눠 1장 부터 문제 해결, 알고리즘 분석, 해싱, 힙, 정렬, 이진 트리, 그래프 등을 다룬다. 

 

먼저 1장에서는 문제를 해결하는 여러 알고리즘들을 설명하고, 각 문제를 어떻게 해결해야하는지에 대한 방향성을 제시한다. 또한 문제 인스턴스 크기에 따라 실행 시간을 분석함으로써 성능 비교를 수행하고, 알고리즘에서 중요한 개념인 "시간 복잡도"와 "공간 복잡도"에 대해서 설명한다. 시간 복잡도는 크기가 N인 문제 인스턴스에서 알고리즘에 의해 실행된 주요 연산의 수를 계산하여 측정하는 것이고, 공간 복잡도는 문제 인스턴스의 크기 N에 기반해 알고리즘에 필요한 추가 메모리 공간을 나타내는 것이다. 여러 알고리즘 사이트에서 이 공간 복잡도와 시간 복잡도를 계산하는 것은 자주 등장하며, 알고리즘의 효율성을 판단하는 명확한 근거이기도 하다.

 

2장에서는 알고리즘에서 매우 중요한 개념인 시간 복잡도, 공간 복잡도를 나타내는 빅오 표기법에 대해 설명하고, 각 복잡도에 따라 어떻게 값이 증가되는지 자세히 설명한다. 3장에서는 해싱에 대해 다루며, 연결 리스트 자료구조, 배장 주소법, 해시 함수 등에 대해 예제를 통해 자세히 설명한다. 4장에서는 힙에 대해 다루는데, 큐와 우선순위 큐 데이터 타입 부터 시작해서 이진 힙에서 우선 순위가 가장 높은 값을 각 시간 복잡도 별로 제거하는 방법에 대해 설명한다. 5장에서는 가장 흔히 나오는 개념인 배열을 통해 정렬하는 방법에 대해 설명한다. 6장에서는 배열에 대한 내용을 배웠으니 재귀 자료 구조인 이진 트리를 연결 리스트와 함께 설명한다. 7장에서는 그래프에 대해 다루며, 알고리즘 문제를 풀 때 꼭 알아두어야 하는 깊이 우선 탐색, 너비 우선 탐색 개념을 배우게 된다. 8장에서는 지금까지 배웠던 내용에 대한 키워드들을 정리해두었다. 또한 파이썬 데이터 타입(백, 스택, 큐, 심볼 테이블, 우선순위 큐, 인덱스 최소 우선순위 큐)의 성능에 대해 자세히 설명해놓았으며, 파이썬 내장 데이터 타입들을 구현하는 방법에 대해 간략히 설명해두었다. 

 

이 책은 책 제목 처럼 지금 보다 더 똑똑한 코드를 작성하고 싶을 때 보면 큰 도움이 되는 책이며, 알고리즘 문제를 풀기 위해 참고해야할 필독서 중 하나라고 생각된다. 또한 깃허브에 예제 코드들을 수록해놓았으며, 각 장마다 등장하는 개념들을 확실하게 습득할 수 있도록 알맞은 예제 코드들을 포함하고 있으며, 각 문제에 대해 어떻게 접근하고, 어떤 개념을 이용하여 풀어내야하는지 자세히 설명해두었기에 강의를 듣지 않고 책만 보아도 이해될 수 있게 내용을 담았다는 느낌을 받았다. 코드의 효율을 향상하는 것은 더 효율적인 프로그램을 만드는데 많은 도움이 되기 때문에 코드 효율성에 대해 고민하는 사람이라면 이 책을 한번쯤 읽어보는 것을 추천한다. 

 

 

 

“한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

 

 

728x90
반응형