[volume. vol.(1)]----------
목차
지은이의 글 = xiv
01 문제 해결 시작하기 = 1
개관 = 2
1 문제 해결과 프로그래밍 대회 = 5
1.1 도입 = 5
1.2 프로그래밍 대회 = 6
1.3 이 책을 읽는 방법 = 9
1.4 국내에서 참가할 수 있는 프로그래밍 대회 = 11
1.5 대회 준비를 위한 조언 = 14
1.6 더 읽을 거리 = 18
2 문제 해결 개관 = 21
2.1 도입 = 21
2.2 문제 해결 과정 = 22
2.3 문제 해결 전략 = 27
2.4 더 읽을거리 = 41
3 코딩과 디버깅에 관하여 = 43
3.1 도입: 코딩의 중요성을 간과하지 말라 = 43
3.2 좋은 코드를 짜기 위한 원칙 = 44
3.3 자주 하는 실수 = 50
3.4 디버깅과 테스팅 = 62
3.5 변수 범위의 이해 = 65
3.6 실수 자료형의 이해 = 72
3.7 더 읽을 거리 = 86
02 알고리즘 분석 = 87
개관 = 88
4 알고리즘의 시간 복잡도 분석 = 91
4.1 도입 = 91
4.2 선형 시간 알고리즘 = 94
4.3 선형 이하 시간 알고리즘 = 97
4.4 지수 시간 알고리즘 = 100
4.5 시간 복잡도 = 106
4.6 수행 시간 어림짐작하기 = 114
4.7 계산 복잡도 클래스: P, NP, NP-완비 = 121
4.8 더 읽을 거리 = 126
5 알고리즘의 정당성 증명 = 127
5.1 도입 = 127
5.2 수학적 귀납법과 반복문 불변식 = 128
5.3 귀류법 = 135
5.4 다른 기술들 = 138
5.5 더 읽을 거리 = 142
03 알고리즘 설계 패러다임 = 143
개관 = 144
6 무식하게 풀기 = 145
6.1 도입 = 145
6.2 재귀 호출과 완전 탐색 = 146
6.3 문제: 소풍(문제 ID: PICNIC, 난이도: 하) = 155
6.4 풀이: 소풍 = 157
6.5 문제: 게임판 덮기(문제 ID: BOARDCOVER, 난이도: 하) = 159
6.6 풀이: 게임판 덮기 = 161
6.7 최적화 문제 = 165
6.8 문제: 시계 맞추기(문제 ID: CLOCKSYNC, 난이도: 중) = 168
6.9 풀이: 시계 맞추기 = 170
6.10 많이 등장하는 완전 탐색 유형 = 172
7 분할 정복 = 175
7.1 도입 = 175
7.2 문제: 쿼드 트리 뒤집기(문제 ID: QUADTREE, 난이도: 하) = 189
7.3 풀이: 쿼드 트리 뒤집기 = 191
7.4 문제: 울타리 잘라내기(문제 ID: FENCE, 난이도: 중) = 195
7.5 풀이: 울타리 잘라내기 = 196
7.6 문제: 팬 미팅(문제 ID: FANMEETING, 난이도: 상) = 201
7.7 풀이: 팬 미팅 = 203
8 동적 계획법 = 207
8.1 도입 = 207
8.2 문제: 와일드카드(문제 ID: WILDCARD, 난이도: 중) = 218
8.3 풀이: 와일드카드 = 220
8.4 전통적 최적화 문제들 = 225
8.5 문제: 합친 LIS(문제 ID: JLIS, 난이도: 하) = 236
8.6 풀이: 합친 LIS = 237
8.7 문제: 원주율 외우기(문제 ID: PI, 난이도: 하) = 239
8.8 풀이: 원주율 외우기 = 241
8.9 문제: Quantization(문제 ID: QUANTIZE, 난이도: 중) = 244
8.10 풀이: Quantization = 245
8.11 경우의 수와 확률 = 251
8.12 문제: 비대칭 타일링(문제 ID: ASYMTILING, 난이도: 하) = 259
8.13 풀이: 비대칭 타일링 = 260
8.14 문제: 폴리오미노(문제 ID: POLY, 난이도: 중) = 264
8.15 풀이: 폴리오미노 = 266
8.16 문제: 두니발 박사의 탈옥(문제 ID: NUMB3RS, 난이도: 중) = 269
8.17 풀이: 두니발 박사의 탈옥 = 272
9 동적 계획법 테크닉 = 279
9.1 최적화 문제의 실제 답 계산하기 = 279
9.2 문제: 여행 짐 싸기(문제 ID: PACKING, 난이도: 중) = 281
9.3 풀이: 여행 짐 싸기 = 283
9.4 문제: 광학 문자 인식(문제 ID: OCR, 난이도: 상) = 285
9.5 풀이: 광학 문자 인식 = 288
9.6 k번째 답 계산하기 = 293
9.7 문제: k번째 최대 증가 부분 수열(문제 ID: KLIS, 난이도: 상) = 299
9.8 풀이: k번째 최대 증가 부분 수열 = 301
9.9 문제: 드래곤 커브(문제 ID: DRAGON, 난이도: 중) = 306
9.10 풀이: 드래곤 커브 = 309
9.11 정수 이외의 입력에 대한 메모이제이션 = 312
9.12 문제: 웨브바짐(문제 ID: ZIMBABWE, 난이도: 상) = 320
9.13 풀이: 웨브바짐 = 322
9.14 문제: 실험 데이터 복구하기(문제 ID: RESTORE, 난이도: 중) = 327
9.15 풀이: 실험 데이터 복구하기 = 329
9.16 조합 게임 = 333
9.17 문제: 숫자 게임(문제 ID: NUMBERGAME, 난이도: 하) = 340
9.18 풀이: 숫자 게임 = 342
9.19 문제: 블록 게임(문제 ID: BLOCKGAME, 난이도: 중) = 344
9.20 풀이: 블록 게임 = 346
9.21 반복적 동적 계획법 = 349
9.22 문제: 회전초밥(문제 ID: SUSHI, 난이도: 중) = 355
9.23 풀이: 회전초밥 = 356
9.24 문제: 지니어스(문제 ID: GENIUS, 난이도: 중) = 359
9.25 풀이: 지니어스 = 361
9.26 더 읽을 거리 = 364
10 탐욕법 = 365
10.1 도입 = 365
10.2 문제: 도시락 데우기(문제 ID: LUNCHBOX, 난이도: 하) = 376
10.3 풀이: 도시락 데우기 = 377
10.4 문제: 문자열 합치기(문제 ID: STRJOIN, 난이도: 중) = 380
10.5 풀이: 문자열 합치기 = 382
10.6 문제: 미나스 아노르(문제 ID: MINASTIRITH, 난이도: 상) = 388
10.7 풀이: 미나스 아노르 = 390
11 조합 탐색 = 399
11.1 도입 = 399
11.2 조합 탐색 기법들 = 402
11.3 문제: 게임판 덮기 2(문제 ID: BOARDCOVER2, 난이도: 하) = 422
11.4 풀이: 게임판 덮기 2 = 423
11.5 문제: 알러지가 심한 친구들(문제 ID: ALLERGY, 난이도: 중) = 428
11.6 풀이: 알러지가 심한 친구들 = 429
11.7 문제: 카쿠로(문제 ID: KAKURO2, 난이도: 중) = 434
11.8 풀이: 카쿠로 = 436
11.9 더 읽을거리 = 443
12 최적화 문제 결정 문제로 바꿔 풀기 = 445
12.1 도입 = 445
12.2 문제: 남극 기지(문제 ID: ARCTIC, 난이도: 하) = 450
12.3 풀이: 남극 기지 = 452
12.4 문제: 캐나다 여행(문제 ID: CANADATRIP, 난이도: 중) = 454
12.5 풀이: 캐나다 여행 = 456
12.6 문제: 수강 철회(문제 ID: WITHDRAWAL, 난이도: 상) = 458
12.7 풀이: 수강 철회 = 460
04 유명한 알고리즘들 = 463
개관 = 464
13 수치 해석 = 467
13.1 도입 = 467
13.2 이분법 = 467
13.3 문제: 승률 올리기(문제 ID: RATIO, 난이도: 하) = 476
13.4 풀이: 승률 올리기 = 477
13.5 삼분 검색 = 479
13.6 문제: 꽃가루 화석(문제 ID: FOSSIL, 난이도: 상) = 486
13.7 풀이: 꽃가루 화석 = 488
13.8 다른 주제들 = 493
14 정수론 = 495
14.1 도입 = 495
14.2 소수 = 495
14.3 문제: 비밀번호 486(문제 ID: PASS486, 난이도: 중) = 501
14.4 풀이: 비밀번호 486 = 503
14.5 유클리드 알고리즘 = 506
14.6 문제: 마법의 약(문제 ID: POTION, 난이도: 중) = 507
14.7 풀이: 마법의 약 = 509
14.8 모듈라 연산 = 512
14.9 더 읽을거리(optional) = 515
15 계산 기하 = 517
15.1 도입 = 517
15.2 계산 기하의 도구들 = 517
15.3 교차와 거리, 면적 = 525
15.4 문제: 핀볼 시뮬레이션(문제 ID: PINBALL, 난이도: 상) = 531
15.5 풀이: 핀볼 시뮬레이션 = 533
15.6 다각형 = 537
15.7 문제: 보물섬(문제 ID: TREASURE, 난이도: 상) = 542
15.8 풀이: 보물섬 = 544
15.9 문제: 너드인가, 너드가 아닌가?(문제 ID: NERDS, 난이도: 중) = 548
15.10 풀이: 너드인가, 너드가 아닌가? = 550
15.11 계산 기하 알고리즘 디자인 패턴 = 556
15.12 자주 하는 실수와 유의점들 = 564
15.13 더 읽을거리 = 566
찾아보기
[volume. vol.(2)]----------
목차
05 기초 자료 구조 = 567
개관 = 568
16 비트마스크 = 575
16.1 도입 = 575
16.2 비트마스크를 이용한 집합의 구현 = 579
16.3 비트마스크의 응용 예제 = 585
16.4 문제: 졸업 학기(문제 ID: GRADUATION, 난이도: 중) = 590
16.5 풀이: 졸업 학기 = 592
16.6 더 읽을거리 = 595
17 부분 합 = 597
17.1 도입 = 597
17.2 문제: 크리스마스 인형(문제 ID: CHRISTMAS, 난이도: 중) = 602
17.3 풀이: 크리스마스 인형 = 603
17.4 더 공부할 거리 = 607
18 선형 자료 구조 = 609
18.1 도입 = 609
18.2 동적 배열 = 609
18.3 연결 리스트 = 615
18.4 동적 배열과 연결 리스트의 비교 = 619
18.5 문제: 조세푸스 문제(문제 ID: JOSEPHUS, 난이도: 하) = 620
18.6 풀이: 조세푸스 문제 = 621
18.7 더 읽을 거리 = 623
19 큐와 스택, 데크 = 625
19.1 도입 = 625
19.2 큐와 스택, 데크의 구현 = 626
19.3 스택과 큐의 활용 = 628
19.4 문제: 짝이 맞지 않는 괄호(문제 ID: BRACKETS2, 난이도: 하) = 633
19.5 풀이: 짝이 맞지 않는 괄호 = 634
19.6 문제: 외계 신호 분석(문제 ID: ITES, 난이도: 중) = 635
19.7 풀이: 외계 신호 분석 = 637
20 문자열 = 643
20.1 도입 = 643
20.2 문자열 검색 = 644
20.3 문제: 재하의 금고(문제 ID: JAEHASAFE, 난이도: 중) = 658
20.4 풀이: 재하의 금고 = 659
20.5 접미사 배열 = 662
20.6 문제: 말버릇(문제 ID: HABIT, 난이도: 중) = 672
20.7 풀이: 말버릇 = 673
20.8 더 읽을거리 = 674
06 트리 = 677
개관 = 678
21 트리의 구현과 순회 = 681
21.1 도입 = 681
21.2 트리의 순회 = 684
21.3 문제: 트리 순회 순서 변경(문제 ID: TRAVERSAL, 난이도: 하) = 686
21.4 풀이: 트리 순회 순서 변경 = 688
21.5 문제: 요새(문제 ID: FORTRESS, 난이도: 중) = 689
21.6 풀이: 요새 = 691
22 이진 검색 트리 = 697
22.1 도입 = 697
22.2 이진 검색 트리의 정의와 조작 = 698
22.3 시간 복잡도 분석과 균형 잡힌 이진 검색 트리 = 701
22.4 문제: 너드인가, 너드가 아닌가? 2(문제 ID: NERD2, 난이도: 중) = 702
22.5 풀이: 너드인가, 너드가 아닌가? 2 = 704
22.6 균형 잡힌 이진 검색 트리 직접 구현하기: 트립 = 708
22.7 문제: 삽입 정렬 뒤집기(문제 ID: INSERTION, 난이도: 중) = 718
22.8 풀이: 삽입 정렬 뒤집기 = 720
23 우선순위 큐와 힙 = 723
23.1 도입 = 723
23.2 힙의 정의와 구현 = 724
23.3 문제: 변화하는 중간 값(문제 ID: RUNNINGMEDIAN, 난이도: 하) = 731
23.4 풀이: 변화하는 중간 값 = 733
24 구간 트리 = 737
24.1 구간 트리: 구간에 대한 질문 대답하기 = 737
24.2 문제: 등산로(문제 ID: MORDOR, 난이도: 중) = 746
24.3 풀이: 등산로 = 747
24.4 문제: 족보 탐험(문제 ID: FAMILYTREE, 난이도: 상) = 747
24.5 풀이: 족보 탐험 = 749
24.6 펜윅 트리: 빠르고 간단한 구간 합 = 754
24.7 문제: 삽입 정렬 시간 재기(문제 ID: MEASURETIME, 난이도: 중) = 758
24.8 풀이: 삽입 정렬 시간 재기 = 760
25 상호 배타적 집합 = 765
25.1 도입 = 765
25.2 문제: 에디터 전쟁(문제 ID: EDITORWARS, 난이도: 중) = 772
25.3 풀이: 에디터 전쟁 = 775
26 트라이 = 781
26.1 도입 = 781
26.2 문제: 안녕히, 그리고 물고기는 고마웠어요!(문제 ID: SOLONG, 난이도: 중) = 787
26.3 풀이: 안녕히, 그리고 물고기는 고마웠어요! = 789
26.4 트라이를 이용한 다중 문자열 검색 = 794
26.5 문제: 보안종결자(문제 ID: NH, 난이도: 상) = 802
26.6 풀이: 보안종결자 = 804
07 그래프 = 807
개관 = 808
27 그래프의 표현과 정의 = 811
27.1 도입 = 811
27.2 그래프의 사용 예 = 815
27.3 암시적 그래프 구조들 = 817
27.4 그래프의 표현 방법 = 819
28 그래프의 깊이 우선 탐색 = 825
28.1 도입 = 825
28.2 문제: 고대어 사전(문제 ID: DICTIONARY, 난이도: 하) = 831
28.3 풀이: 고대어 사전 = 833
28.4 오일러 서킷 = 836
28.5 문제: 단어 제한 끝말잇기(문제 ID: WORDCHAIN, 난이도: 하) = 842
28.6 풀이: 단어 제한 끝말잇기 = 843
28.7 이론적 배경과 응용 = 848
28.8 문제: 감시 카메라 설치(문제 ID: GALLERY, 난이도: 중) = 862
28.9 풀이: 감시 카메라 설치 = 864
28.10 문제: 회의실 배정(문제 ID: MEETINGROOM, 난이도: 상) = 868
28.11 풀이: 회의실 배정 = 869
29 그래프의 너비 우선 탐색 = 881
29.1 도입 = 881
29.2 문제: Sorting Game(문제 ID: SORTGAME, 난이도: 중) = 886
29.3 풀이: Sorting Game = 887
29.4 문제: 어린이날(문제 ID: CHILDRENDAY, 난이도: 상) = 891
29.5 풀이: 어린이날 = 892
29.6 최단 경로 전략 = 898
29.7 문제: 하노이의 탑(문제 ID: HANOI4B, 난이도: 중) = 912
29.8 풀이: 하노이의 탑 = 914
30 최단 경로 알고리즘 = 919
30.1 도입 = 919
30.2 다익스트라의 최단 경로 알고리즘 = 921
30.3 문제: 신호 라우팅(문제 ID: ROUTING, 난이도: 하) = 930
30.4 풀이: 신호 라우팅 = 932
30.5 문제: 소방차(문제 ID: FIRETRUCKS, 난이도: 중) = 933
30.6 풀이: 소방차 = 935
30.7 문제: 철인 N종 경기(문제 ID: NTHLON, 난이도: 상) = 936
30.8 풀이: 철인 N종 경기 = 938
30.9 벨만-포드의 최단 경로 알고리즘 = 941
30.10 문제: 시간여행(문제 ID: TIMETRIP, 난이도: 중) = 948
30.11 풀이: 시간여행 = 950
30.12 플로이드의 모든 쌍 최단 거리 알고리즘 = 952
30.13 문제: 음주 운전 단속(문제 ID: DRUNKEN, 난이도: 중) = 959
30.14 풀이: 음주 운전 단속 = 961
30.15 문제: 선거 공약(문제 ID: PROMISES, 난이도: 중) = 963
30.16 풀이: 선거 공약 = 966
31 최소 스패닝 트리 = 969
31.1 도입 = 969
31.2 크루스칼의 최소 스패닝 트리 알고리즘 = 970
31.3 프림의 최소 스패닝 트리 알고리즘 = 975
31.4 문제: 근거리 네트워크(문제 ID: LAN, 난이도: 하) = 979
31.5 풀이: 근거리 네트워크 = 981
31.6 문제: 여행 경로 정하기(문제 ID: TPATH, 난이도: 상) = 981
31.7 풀이: 여행 경로 정하기 = 983
32 네트워크 유량 = 991
32.1 도입 = 991
32.2 포드-풀커슨 알고리즘 = 993
32.3 네트워크 모델링 = 1001
32.4 문제: 승부 조작(문제 ID: MATCHFIX, 난이도: 중) = 1005
32.5 풀이: 승부 조작 = 1007
32.6 문제: 국책 사업(문제 ID: PROJECTS, 난이도: 상) = 1010
32.7 풀이: 국책 사업 = 1013
32.8 이분 매칭 = 1016
32.9 문제: 비숍(문제 ID: BISHOPS, 난이도: 중) = 1024
32.10 풀이: 비숍 = 1026
32.11 문제: 함정 설치(문제 ID: TRAPCARD, 난이도: 상) = 1028
32.12 풀이: 함정 설치 = 1030
32.13 더 공부할 거리 = 1035
찾아보기