Scientia Conditorium

[책리뷰] 똑똑한 코드 작성을 위한 실전 알고리즘(Learning Arlgorithms) 본문

서평/IT-책

[책리뷰] 똑똑한 코드 작성을 위한 실전 알고리즘(Learning Arlgorithms)

크썸 2022. 11. 27. 20:39

[책리뷰] 똑똑한 코드 작성을 위한 실전 알고리즘(Learning Arlgorithms)

 

 

 

학부 과정에서 알고리즘 수업을 수강했거나 기본적인 알고리즘을 알고 있는 이후에 보면 좋은 책이다.

여러 알고리즘을 소개하기 보다는 대표적으로 많이 사용하고 널리 알려진 알고리즘들을 조금 더 심도있게 다루고 있는 책이라고 생각하면 된다. 책에서 다루는 알고리즘으로는아래와 같다.

  • 알고리즘 분석(시간복잡도, 공간복잡도, 성능 비교 방법)
  • 해싱(키, 해시함수, 연결 리스트, 동적 해시 테이블, 완벽한 해싱)
  • 힙(최대 이진 힙, 배열로 이진 힙 구성, 엔트리 이동의 구현)
  • 정렬(교환, 선택, 삽입, 재귀, 병합, 퀵, 힙, 팀)
  • 이진 트리(이진 탐색 트리, 탐색, 제거, 순회, 성능 분석, 자가 균형 이진 트리)
  • 그래프(모델링, 깊이 우선, 너비 우선, 유향, 가중치, 다익스트라, 플로이드-워셜)

알고리즘을 처음 배울때에는 어떤 문제에서 어떤 알고리즘을 사용하면 효율적인지 배운다. 이 책에서는 알고리즘을 소개하는게 주 목적이 아닌 자료구조와 기본 알고리즘을 알려주어 더 효율적인 프로그램을 작성하도록 도와주는 것이 핵심이다. 코드의 성능을 최대화하려면 여러 데이터 타입을 효율적으로 구현하는 방법을 알아야 하기 때문이다. 그 중 저자가 말하는 데이터 타입들을 백, 스택, 큐, 심볼 테이블, 우선순위 큐, 인덱스 최소 우선순위 큐, 그래프 이다.

 

이 책의 가장 좋은 장점은 여러 알고리즘들의 성능을 비교하여 정리한 점이다.

특히 정렬 알고리즘 소개에서 팀 정렬(Tim sort)은 학교나 학원에서도잘 안 알려주는 알고리즘이다. 이런 알고리즘을 소개해주면서 기존 알고리즘들과 어떻게 다르고 얼마나 더 성능이 좋은지를 시각적으로 알려준다. 코드만 보면 단번에 이해하기 어려운 알고리즘을 시각적으로 어떻게 동작하는지도 자세히 서술되어 있다.

 

rmax 전체 재귀 실행 과정 시각화

처음에도 적어두었지만 이 책은 단순히 알고리즘을 공부하겠다는 생각으로 접하는 것은 권장하지 않는다. 그러나 어느 정도 알고리즘을 접한 이후에 실무에서 내가 구현한 알고리즘 성능을 조금 더 끌어올리기 위해 어떻게 해야하는지 고민될 때 접하는 것을 추천한다. 물론 요즘에는 언어 자체적으로 기본 내장된 함수들을 사용하기 때문에 성능에 관해 다른 방면으로 접근하는 경우가 많다. 그러나 프로그래머라면 성능에 대해 한번쯤은 고민해보고 내가 작성한 알고리즘이 아니더라도 기본 구현된 알고리즘 성능에 대해 고민하면서 가볍게 읽어보았으면 한다.

 

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