독서/📚

[도서 리뷰] 그로킹 알고리즘(개정판)

leejinwoo1126 2025. 2. 21. 19:31
반응형

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

 

 

📖 도서 정보

https://www.hanbit.co.kr/store/books/look.php?p_code=B1314421842

 

그로킹 알고리즘(개정판)

알고리즘, 어렵지 않다! 그림과 예제로 쉽게 배우는 알고리즘 입문서

www.hanbit.co.kr

 

📖 도서 리뷰

그로킹 알고리즘(개정판)은 단순한 이론에 대한 설명이 아니라 직관적으로 체득할 수 있도록 돕는 책입니다. 이 책은 복잡한 개념을 쉽게 풀어내며, 특히 알고리즘을 처음 접하거나 코딩 테스트를 준비하는 사람들에게 좋은 가이드가 됩니다. 

 

그로킹(Grokking)
이 단어는 깊은 이해를 의미하며, 단순히 머리로 이해하는 것이 아니라 완전히 체화하여 직관적으로 깨닫는 상태를 뜻합니다.
다시 말해, 어떤 개념을 단순히 이론적으로 아는 것이 아니라 완전히 익혀서 자연스럽게 적용할 수 있는 수준을 의미합니다.

 

✔️ 장점

1️⃣ 체계적인 구성

  • 시간 복잡도, 빅오 표기법과 같은 기본적인 개념부터 시작해 점진적으로 난이도를 높이는 방식으로 구성되어 있습니다.
  • 그래서 초보자도 부담 없이 따라가실 수 있고, 자연스럽게 자료구조와 알고리즘에 대한 이해도를 쌓으실 수 있습니다.
    • HashTable과 충돌
    • Array와 LinkedList 비교
  • 또한, 각 챕터의 마지막에는 핵심 정리와 연습문제가 포함되어 있어 배운 내용을 복습할 수 있도록 도와줍니다.

 

해시 테이블의 load factor 
① 사용률 (load factor) = 해시 테이블에 있는 항목의 수 / 공간의 수
② 사용률이 1보다 크다는 것은 배열에 공간의 수보다 항목의 수가 많다는 의미
③ 사용률이 커지기 시작하면 해시 테이블의 공간을 추가해야 함
④ 이를 리사이징(resizing)이라고 함
⑤ 보통은 사용률이 0.7 보다 커지면 리사이징함
⑥ 해시 테이블은 리사이징해도 평균적으로 O(1) 시간이 걸림

 

책을 읽으면서 특히 인상적이었던 부분은 load factor를 설명하는 부분이었습니다. 구현 레벨에 가까운 내용까지 다루고 있어, 읽는 순간 소름이 돋았습니다. 과거 자료구조와 알고리즘을 학습할 때, 직접 구현을 해본 뒤 Java Collection Framework를 분석했던 경험이 있습니다. 당시에는 load factor = 0.7의 정확한 의미를 이해하지 못했지만, load factor를 기준으로 자료구조가 다음과 같이 변경된다는 점은 파악할 수 있었습니다.

  • load factor 이하: LinkedList를 사용하여 value 저장
  • load factor 초과: Tree 구조로 변경하여 value 저장

이처럼 단순한 개념 설명을 넘어, 내부 동작 방식까지 깊이 있게 다루는 점이 이 책의 강점이라고 느꼈습니다.

 

 

2️⃣ 코딩 테스트에서 자주 나오는 유형을 다룹니다

  • 이진 탐색, 재귀, 정렬, 그래프 탐색 등 실제 코딩 테스트에서 자주 등장하는 알고리즘을 다루고 있어 실용성이 높습니다.
  • 저는 특히 재귀에 대한 이해도를 쌓고 싶어서 이 책을 읽었는데, 완전탐색, 백트래킹, 동적 프로그래밍, 깊이 우선 탐색(DFS) 등 여러 중요한 알고리즘의 기초가 되기 때문에 많은 도움이 되었습니다.
  • 단, 파이썬으로된 간단한 예제 코드를 다루므로 기본 문법을 이해하고 읽으시는 것을 권장합니다

 

리 콜드웰 (Leigh Caldwell) - 스택 오버플로
"프로그램에 반복문을 사용하면 프로그램의 성능을 향상시킬 수 있지만, 재귀를 사용하면 프로그래머의 능력을 향상시킬 수 있습니다. 상황에 따라 적절한 방법을 골라 사용하세요"

 

참고. 예제 코드

def countdown(i):
  print(i)
  if i <= 1: // 기본 단계 
	return
  else:   // 재귀 단계
	countdown(i - 1);

countdown(3)
  •  기본단계 (base case)
    • 함수가 자기 자신을 다시 호출하지 않는 경우 (종료 조건*)
  • 재귀단계 (recursive case)
    • 함수가 자기 자신을 호출하는 부분

 

3️⃣ 예제와 그림을 통한 직관적 설명

  • 텍스트만 있는 이론서와 달리, 이 책은 현실적인 예시를 그림과 함께 개념 설명하기 때문에 시각적으로 이해하기 쉽습니다.
  • 알고리즘이 어떻게 동작하는지 흐름을 따라가다 보면 자연스럽게 개념이 정리됩니다.
  • 참고로, 그래프 탐색에서 기본 용어와 간선의 가중치에 따라 알고리즘을 선택하는 방법도 명확히 이해할 수 있습니다.
    • 가중치가 1보다 크다면 → 다익스트라 알고리즘 사용 (최소 힙, 우선순위 큐 활용)
    • 가중치가 1이거나 일정하다면 → BFS(너비 우선 탐색) 사용 (큐 활용)
    • 가중치가 음수이고 순환이 발생한다면 → 벨만-포드 알고리즘 사용

 

 

❗ 아쉬운점

  • 이 책을 읽는다고 해서 바로 코딩 테스트 문제를 풀 수 있는 것은 아닙니다.
  • 즉, 알고리즘을 이해하는 데 초점이 맞춰져 있어 실전 문제 풀이는 따로 연습이 필요합니다.
  • 하지만, 개념을 탄탄히 다지고 새로운 인사이트를 얻는데는 큰 도움이 됩니다.

 

👨🏻‍💻 도서 추천 대상

  • 알고리즘을 처음 배우거나 관심이 있으신 분
  • 개념을 직관적으로 이해하고 싶은 분
  • 코딩 테스트를 준비하며 알고리즘의 기초를 탄탄히 하고 싶은 분

 

 

 

반응형