저자

제레미쿠비카

저자:제레미쿠비카(JeremyKubica)
인공지능과머신러닝전문가인엔지니어링디렉터로,코넬대학교에서컴퓨터과학학사,카네기멜런대학교에서로봇학박사학위를받았다.대학원연구시절잠재적인킬러소행성을감지하기위한알고리즘개발에참여했다.『ComputationalFairyTales』,『TheCSDetective』(NoStarchPress,2016)를저술했고,‘ComputationalFairyTales’블로그도작성했다.

역자:오현석
모빌리티42이사로일하면서매일고객의요청에따라코드를만드는현업개발자다.어릴때처음컴퓨터를접하고매혹된후경기과학고,KAIST전산학과(프로그래밍언어전공석사)를거치면서계속컴퓨터를사용해왔다.직장에서는주로코틀린이나자바를사용한서버프로그래밍을하고,주말이나여가시간에는번역을하거나공부를하면서즐거움을찾는다.시간이아주많이남을때는시뮬레이션게임을즐기면서머리를식히고,어떻게하면막내자식을프로그래밍의세계로끌어들일수있을지를고민하는아빠이기도하다.『코어파이썬애플리케이션프로그래밍』(에이콘,2014)을시작으로『코틀린함수형프로그래밍』(에이콘,2023),『아토믹코틀린』(길벗,2023),『코딩좀아는사람』(윌북,2023)등30여권의책을번역했다.

목차


1장메모리안정보
1.1변수
1.2복합자료구조
1.3배열
1.4문자열
1.5변수와배열이중요한이유

2장이진탐색
2.1문제정의
2.2선형스캔
2.3이진탐색알고리즘
2.4이진탐색적용하기
2.5실행시간045
2.6이진탐색이중요한이유

3장동적자료구조
3.1배열의한계
3.2포인터와참조
3.3연결리스트
3.4연결리스트에대한연산
3.5이중연결리스트
3.6항목들의배열과연결리스트
3.7연결리스트가중요한이유

4장스택과큐
4.1스택
4.2큐
4.3순서의중요성
4.4스택과큐가중요한이유

5장이진탐색트리
5.1이진탐색트리구조
5.2이진탐색트리에서탐색하기
5.3이진탐색트리변경하기
5.4균형이맞지않는트리의위험성
5.5이진탐색트리대량구축
5.6이진탐색트리가중요한이유

6장트라이와적응형자료구조
6.1문자열로이뤄진이진탐색트리
6.2트라이118
6.3트라이가중요한이유

7장우선순위큐와힙
7.1우선순위큐
7.2최대힙
7.3우선순위갱신하기
7.4최소힙
7.5힙정렬
7.6힙이중요한이유

8장격자
8.1최근접이웃탐색소개
8.2격자
8.3격자에대한탐색
8.4격자크기의중요성
8.52차원을넘어
8.6공간데이터를넘어
8.7격자가중요한이유

9장공간트리
9.1쿼드트리
9.2k-d트리
9.3쿼드트리와k-d트리가중요한이유

10장해시테이블
10.1키를사용한저장과탐색
10.2해시테이블
10.3해시함수
10.4해시테이블이중요한이유

11장캐시
11.1캐시소개
11.2만료와캐시
11.3다른만료전략들
11.4캐시가중요한이유

12장B-트리
12.1B-트리구조
12.2B-트리탐색하기
12.3키삽입하기
12.4키제거하기
12.5B-트리가중요한이유

13장블룸필터
13.1블룸필터소개
13.2블룸필터매개변수튜닝하기
13.3블룸필터와해시테이블의비교
13.4블룸필터가중요한이유

14장스킵리스트
14.1무작위적구조와결정적인구조의비교
14.2스킵리스트소개
14.3실행시간
14.4스킵리스트가중요한이유

15장그래프
15.1그래프소개
15.2데이크스트라알고리즘을사용해최단경로찾기
15.3프림의알고리즘을사용해최소스패닝트리찾기
15.4칸의알고리즘을이용한위상정렬
15.5그래프가중요한이유

16장결론
16.1데이터의구조가미치는영향은무엇인가?
16.2동적자료구조가필요한가?
16.3분할상환비용이무엇인가?
16.4어떻게자료구조를구체적인문제에맞게적응시킬수있을까?
16.5메모리와실행시간사이의트레이드오프란무엇인가?
16.6자료구조를어떻게튜닝할까?
16.7무작위화가기대동작에미치는영향은어떤가?
16.716장이중요한이유

출판사 서평

이책은단순히자료구조의종류를나열하고소개하는책이아니다.어떻게동작하는지,왜이자료구조가중요한지에초점을맞춰재미있게풀어낸입문서이다.수많은도해와유머러스한비유를통해자료구조가프로그램을어떻게더효율적이고유연하게만드는지쉽게배울수있다.책에나오는모든자료구조는프로그래밍언어에구애받지않는의사코드로보여주며,변수와배열부터스택,캐시,블룸필터,쿼드트리,그래프에이르기까지15개이상의핵심자료구조를구현해본다.박물관의수집품컬렉션인덱스를구성하거나만화대사를이용해홍보문구를만들고다람쥐가나무줄기를따라목적지로이동하는걸관찰하고,심지어는가장가까운커피숍을찾는방법등일상에서있을법하면서도기발한예제로구성했다.

이책에서다루는내용

계산성능을최적화하기위해속도,유연성,메모리사용량간의균형맞추기
필요에따라동적으로확장하거나축소할수있는자료구조설계하기
간단한자료구조를결합해캐시항목추정,값과키매핑,메모리에맞춰노드크기조정등고급작업수행하기
해시테이블에서데이터검색,이진검색트리로검색속도향상시키기
B-트리로검색효율성향상시키기,무작위적구조로불량데이터의영향줄이기
우리에게익숙한실생활예시로독자의눈높이에맞춰설명하기때문에읽는내내재미있고추상적인개념들도충분히이해할수있다.자료구조를따로배운적이없거나기억이잘나지않아빠르게복습하고싶다면이책한권으로끝내길추천한다.

이책은‘자료구조’를통해바라보는계산적사고(computationalthinking)에대한책이다.자료구조는데이터를조직적으로구성하고저장하기위한구조다.이책은유용한자료구조를모아둔레시피이상의책이다.단순히자료구조를모은것에그치지않고,각자료구조의근본이되는생각과복잡한문제를해결할때자료구조가미치는영향을탐구하며,앞서말한계산적사고를직관적으로이해할수있도록실생활예시를들어설명한다.이책의목표는데이터안에이미존재하는구조를활용하거나새로운구조를만들어문제를효율적으로해결하는방법을통찰하는것이다.
-제레미쿠비카