성장通

[리뷰] 똑똑한 코드 작성을 위한 실전 알고리즘 본문

리뷰/도서 리뷰

[리뷰] 똑똑한 코드 작성을 위한 실전 알고리즘

백악기작은펭귄 2022. 6. 29. 16:36

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

 

똑똑한 코드 작성을 위한 실전 알고리즘 (Learning Algorithms)

조지 하이네만 저, 윤대석 역

 

 

똑똑한 코드 작성을 위한 실전 알고리즘 - 교보문고

파이썬 예제로 문제 해결 전략 익히기 | 핵심만 골라 확실하게 익히는 파이썬 알고리즘 알고리즘 학습에서 가장 중요한 것은 문제 해결 능력입니다. 단순히 각 알고리즘의 기능을 개별적으로만

www.kyobobook.co.kr


간단 서평

오레일리 자료구조&알고리즘 시리즈 3대장의 핵심을 담아낸 파이썬 알고리즘 실전서다.

코딩 테스트를 준비하는 프로그래머 지망생은 물론, 현업에서 일하고 있는 실무자, 그리고 전문적인 개발을 하지 않는 연구자에게까지 도움이 되는 내용들로 알차게 구성되어 있다.

컴퓨터 관련 학과를 나온 사람들은 알고리즘을 주구장창 배우고 시험을 본 뒤에는 전부 잊어버렸던 경험이 한번씩은 있을 거다. 조심스레 그 이유에 대해 생각해볼 때, 그때는 이게 왜 중요한지 몰랐기 때문이 가장 크지 않았나 싶다. 

이 책은 그 '이유'를 명확하게 제시함으로써 알고리즘의 중요성을 알려주고 있다. CS 핵심 알고리즘을 분석하고 시각화한 후 성능을 측정해봄으로써 자료구조와 알고리즘을 배우는 명확한 이유를 제시하고, 응용까지 가져가 실제 문제 해결에도 도움을 준다.


목차

CHAPTER 1 문제 해결
1.1 알고리즘이란
1.2 리스트에서 가장 큰 값 찾기
1.3 주요 연산 횟수 계산하기
1.4 모델로 알고리즘 성능 예측하기
1.5 리스트에서 가장 큰 두 수 찾기
1.6 토너먼트 알고리즘
1.7 시간 복잡도와 공간 복잡도
1.8 요약
1.9 연습 문제

CHAPTER 2 알고리즘 분석
2.1 경험적 모델로 성능 예측하기
2.2 곱셈 성능 예측하기
2.3 성능 클래스
2.4 점근적 분석
2.5 모든 수행 계산하기
2.6 모든 바이트 계산하기
2.7 이진 배열 탐색
2.8 이진 배열 탐색으로 리스트에서 값 찾기
2.9 이진 배열 탐색의 또 다른 기능
2.10 알고리즘 성능 비교
2.11 곡선 피팅 vs. 상/하한
2.12 요약
2.13 연습 문제

CHAPTER 3 해싱
3.1 키와 연관된 값
3.2 해시 함수와 해시 코드
3.3 (키, 값) 쌍에 대한 해시 테이블 구조
3.4 선형 조사로 충돌 검출 및 해결하기
3.5 연결 리스트를 사용한 분리 연쇄법
3.6 연결 리스트에서 엔트리 삭제하기
3.7 개방 주소법과 분리 연쇄법 평가하기
3.8 동적 해시 테이블
3.9 동적 해시 테이블 성능 분석하기
3.10 완벽한 해싱
3.11 (키, 값) 쌍 순회하기
3.12 요약
3.13 연습 문제

CHAPTER 4 힙
4.1 최대 이진 힙
4.2 (값, 우선순위) 삽입하기
4.3 우선순위가 가장 높은 값 제거하기
4.4 배열로 이진 힙 구성하기
4.5 엔트리 이동의 구현
4.6 요약
4.7 연습 문제

CHAPTER 5 정렬
5.1 교환을 통한 정렬
5.2 선택 정렬
5.3 성능이 O(N2)인 정렬 알고리즘의 구조
5.4 삽입 정렬과 선택 정렬의 성능
5.5 재귀와 분할 정복
5.6 병합 정렬
5.7 퀵 정렬
5.8 힙 정렬
5.9 O(NlogN) 알고리즘의 성능 비교하기
5.10 팀 정렬
5.11 요약
5.12 연습 문제

CHAPTER 6 이진 트리
6.1 시작하기
6.2 이진 탐색 트리
6.3 이진 탐색 트리에서 값 탐색하기
6.4 이진 탐색 트리에서 값 제거하기
6.5 이진 탐색 트리 순회하기
6.6 이진 탐색 트리 성능 분석하기
6.7 자가 균형 이진 트리
6.8 자가 균형 이진 트리 성능 분석하기
6.9 이진 탐색 트리를 (키, 값) 심볼 테이블로 사용하기
6.10 이진 탐색 트리를 우선순위 큐로 사용하기
6.11 요약
6.12 연습 문제

CHAPTER 7 그래프
7.1 그래프로 문제 모델링하기
7.2 깊이 우선 탐색으로 미로 풀기
7.3 너비 우선 탐색으로 미로 풀기
7.4 유향 그래프
7.5 가중치 그래프
7.6 다익스트라 알고리즘
7.7 모든 쌍의 최단 경로 문제
7.8 플로이드-워셜 알고리즘
7.9 요약
7.10 연습 문제

CHAPTER 8 정리
8.1 파이썬 내장 데이터 타입
8.2 스택 구현하기
8.3 큐 구현하기
8.4 힙과 우선순위 큐 구현
8.5 이후 학습