글쓴이와 여러 리뷰어들이 오랜 시간을 거쳐 리뷰했지만, 1000쪽이 넘는 긴 책이다 보니 오류가 많을 수밖에 없습니다. 오류를 찾으셨을 경우 jongman@gmail.com으로 쪽수와 틀린 내용을 적어 메일주세요.
장절 | 쪽수 | 틀린 내용 |
---|---|---|
9.8 | 301 | '반면 최대치를 반환하는 next가 하나 이상 있다면' => '반면 최대치를 반환하는 next가 둘 이상 있다면' (제보자: 김강산) |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
2.3 | 30 | '이때 사탕을 가장 많이 받은 어린이가 가장 적게 받은 어린이에게 사탕을 하나 준다고 해도 사탕의 총량이 역전되지 않습니다. 그러면 이 둘이 가진 사탕의 양의 차이는 항상 감소합니다.' => '이때 사탕을 가장 많이 받은 어린이가 가장 적게 받은 어린이에게 사탕을 하나 준다면 이 둘이 가진 사탕의 양의 차이는 항상 감소합니다.' (제보자: 정우영) |
4.7 | 121 | '이때 25603은 대략 16억입니다.' => 160억, '1초에 수행할 수 있는 반복문의 수행 횟수가 알고리즘 간에 최대 열 배까지' => 100배 (제보자: 김형민) |
19.7 | 639 | 그림 19.4 (d)에서 굵은 선으로 표시된 구간은 짙게 표시되면 안됩니다. 고쳐진 그림 (제보자: 서성준) |
20.2 | 651 | 전체 수행 회수 => 전체 수행 횟수 (제보자: 김진) |
20.5 | 671 | 코드 20.12에서 ret += s.size() - a[i] - cp; 보다 ret += n - a[i] - cp; 가 의도를 더 잘 표현합니다. (제보자: 김무성) |
32.8 | 1019 | 코드 32.5의 주석에서 // b가 매칭되어 있지 않다면 bMatch[b]에서부터 시작해.. => // b가 이미 매칭되어 있다면 bMatch[b]에서부터 시작해.. (제보자: 양동혁) |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
32.2 | 996 | 코드 32.1의 너비 우선 탐색에서 while(!q.empty() && parent[sink] == -1) 줄의 맨 뒤에 중괄호 ({ )가 빠졌습니다. 그리고 그 4줄 밑의 if(capacity[here][there]... 줄과 해당 블럭은 들여쓰기 되어야 합니다. (제보자: 김진) |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
30.2 | 930 | 코드 30.2의 5번째 줄에 visited[src] = true; 는 visited[src] = false; 여야 합니다. (제보자: 한정욱, 김이수, 이우람, 황인기) |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
30.11 | 951 | 코드 30.5의 주석에서 "완화가 성공한다면 here와 there은 모두 음수 사이클에 들어 있다" => "완화가 성공한다면 here는 음수 사이클에 들어 있다" (제보자: 최길웅) |
31.7 | 989 | 코드 31.8에 오류가 있습니다. (제보자: 김이수) |
32.2 | 999 | "잔여 용량이 1이라도 있다면 반대쪽 정점 또한 T에 포함되어야 하기 때문이지요" => "잔여 용량이 1이라도 있다면 반대쪽 정점 또한 S에 포함되어야 하기 때문이지요" (제보자: 이시영) |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
14.2 | 499 | "sieve()를 실행한 후에는" => "eratosthenes()를 실행한 후에는" (제보자: 임윤경) |
30.5 | 934 | "입력의 마지막 두 줄에는" => "각 테스트 케이스의 마지막 두 줄에는" |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
2.3 | 30 | 사탕 나눠주기 문제의 해법이 부족한 점이 많아 정정합니다. |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
11.2 | 410 | 코드 11.3의 search() 함수 내에, for문이 시작되기 전에도 생략된 코드가 있습니다. (제보자: infoefficiency) |
13.7 | 491 | '인접한두' => '인접한 두' |
13.7 | 492 | '아래 껍질의 선분을 순회하며 최대 x 좌표를 찾는다.' => '최대 y좌표' (제보자: siscos) |
15.11 | 559 | 24장에서 다루는 펜윅 트리 => 24장에서 다루는 구간 트리 |
25.3 | 779 | buf.find(node) => buf.parent[node] 로 정정해야 컴파일 오류가 나지 않습니다. (제보자: 천민호) |
28.7 | 859 | "한 SCC에 속한두 정점 사이를" => "한 SCC에 속한 두 정점 사이를" |
28.10 | 869 | MEETINGROOM 문제에서 세 번째 예제의 출력은 POSSIBLE / 2 5 / 8 10 / 11 12 입니다. (/는 줄바꿈) (제보자: 천민호) |
29.5 | 897 | 코드 29.5의 주석에서 회색 정점 i는 i~2n-1로 표현한다 => 회색 정점 i는 n~2n-1로 표현한다 (제보자: 박찬제) |
28.10 | 860 | Tarjan의 강결합 컴포넌트 분리 알고리즘의 유도와 구현이 잘못되었습니다. (제보자: Signin) |
30.16 | 966 | '경우할 수 있는 정점' => '경유할 수 있는 정점' (제보자: 김진솔) |
31.7 | 988 | '마지막에 경로를 찾은 하한을 기억해 뒀다가' => '마지막에 경로를 찾은 상한을 기억해 뒀다가' (제보자: 김진솔) |
32.2 | 998 | 'T에서 S로 흘러오는 (c, d) 간선의 유량은' => 'T에서 S로 흘러오는 (c, b) 간선의 유량은' (제보자: 김진솔) |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
17.3 | 606 | 코드 17.4의 ret = (ret + ((count[i] * (count[i-1] - 1)) / 2)) % MOD; 는 ret = (ret + ((count[i] * (count[i] - 1)) / 2)) % MOD; 로 바뀌어야 합니다. (제보자: 박찬제) |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
2.3 | 37,38 | 모든 칸의 불을 끄는 문제가 아니라 모든 불을 켜는 문제입니다. (제보자: 진태훈) |
6.7 | 165 | 페이지 하단의 그림 6.6은 전부 6.4로 바뀌어야 합니다. (제보자: 나선진) |
8.10 | 246 | "U의 크기가 100인 경우에만도 $ \left ( 1000 \atop 100 \right ) $" => "U의 크기가 10인 경우에만도 $ \left ( 1000 \atop 10 \right ) $" (제보자: precisely) |
8.11 | 258 | 페이지 하단부 수식의 각 줄 끝에 괄호가 중복되어 있습니다. 올바른 수식은 $climb2(days, climbed) = 0.75 \times climb2(days + 1, climbed + 1) + 0.25 \times climb2(days + 1, climbed + 2)$ 입니다. (제보자: 김연승) |
8.17 | 276 | 'here로 올 확률은 search3(here, days-1)에' => 'here로 올 확률은 search3(there, days-1)에' (제보자: 이승현) |
9.15 | 331 | "사전 순으로 가장 앞에 오는 답을 찾기" => "실제 문제의 답인 문자열을 찾기" |
9.16 | 332 | 코드 9.19 주석, "recover()가 최소 값을 반환한" => "restore()가 최대 값을 반환한" (제보자: 박찬제, 신동화) |
9.21 | 353 | 반환된 행렬과 $C_0$을 직접 곱할 필요 없이 => $C_1$ (제보자: 서승현) |
9.23 | 358 | $n$의 최대치가 10억 => $m$의 최대치가 10억 (제보자: 박찬제) |
18.3 | 614 | "동작 배열" => "동적 배열" (제보자: 이정석) |
18.3 | 615 | 사각형으로 표현된 원소과 포인터들 => 사각형으로 표현된 원소와 포인터들 (제보자: 서승현) |
19.7 | 639 | ITES 문제의 예제 답안에 오류가 있습니다. 자세히 보기 (제보자: precisely) |
28.6 | 843 | "한 단어의 마지막 글자가 다른 단어의 |
28.11 | 878 | isTrue = vertex % 2; => isTrue = vertex % 2 == 0; (제보자: 이호태) |
29.7 | 913 | 하노이의 탑 문제의 예제 입력은 다음과 같아야 합니다. (제보자: 이정석) |
30.2 | 922 | 우선 순위 큐에 이미 들어 있는 $(9, c)$는 어떻게 할까요? => $(12, c)$ (제보자: H.D. Moon) |
30.14 | 963 | solve 함수의 첫 번째 for문에 들여쓰기가 되어 있지 않습니다. |
30.14 | 963 | 코드 30.9의 solve 위에 다음 주석을 추가해야 합니다. "입력을 받을 때 1부터 시작하는 정점 번호를 0부터 시작하도록 변경했다고 가정한다." (제보자: 이정석) |
30.15 | 965 | 선거 공약 문제의 예제 입력은 다음과 같아야 합니다. 또한, 입력 설명에서 $a$, $b$의 범위는 $0 \le a, b < V$입니다. (제보자: 이정석) |
장절 | 쪽수 | 틀린 내용 |
---|---|---|
2.3 | 29 | '선거 공약' 문제의 ID는 PROMISE 입니다. (제보자: 김동규) |
2.3 | 34 | '너드인가, 너드가 아닌가?' 문제의 ID는 NERDS 입니다. (제보자: 김동규) |
3.5 | 68 | "32비트 부호 없는 정수를 사용할 경우 오버플로가 발생하여" => "32비트 부호 있는 정수를 사용할 경우 오버플로가 발생하여" (제보자: 유영준) |
3.6 | 72 | 코드 3.4의 주석에서 x * 1.0 / x == x 인 수가 아니라 x * 1.0 / x == 1 인 수를 세는 것입니다. (제보자: 이도경) |
4.3 | 96 | 두번째 단락 첫번째 줄의 "어떻게 하면 이 프로그램을 좀더 빨리 짤 수 있는지" => "어떻게 하면 좀 더 빠른 프로그램을 짤 수 있는지" (제보자: 김동규) |
7.1 | 177 | fastSum 의 식은 $fastSum(n) = 2 \times fastSum \left ( \frac{n}{2} \right ) + \frac {n^2}{4}$ 입니다. (제보자: 박찬제) |
7.1 | 184 | 코드 7.3의 normalize 에서 if(num.back() == 0) num.pop_back(); => while(num.size() > 1 && num.back() == 0) num.pop_back(); (제보자: 신기정) |
7.1 | 189 | 카라츠바 알고리즘의 병합 단계에 드는 시간 $n \times \sum_{i=0}^{\lg n} \left ( \frac {3}{2} \right ) ^ {i}$은 $n^{\lg 3}$보다 훨씬 느리게 증가하는 것이 아니라 같은 속도로 증가합니다. (제보자: 신기정) |
7.6 | 202 | 팬미팅(FANMEETING) 문제의 제한 시간은 10초입니다. |
8.4 | 235 | $C[]$는 단조 증가가 아니라 순증가합니다. (제보자: sjw0687) |
8.7 | 241 | "원주율 외우기" 문제의 비고에서 {12674, 939} => {12673, 939} (제보자: 하광성) |
8.10 | 247 | 가운데 예제에서 집합 {1,4,6}을 표현하는 가장 오차가 작은 정수는 4입니다. {744, 755, 777}을 가장 오차 작게 표현하는 정수는 759입니다. (제보자: 장재현) |
8.11 | 249 | $psum[b] - psum[a]$ 식의 오른쪽 끝은 $\sum_{i=a}^{b}A[i]$ 입니다. (제보자: 하광성) |
9.4 | 287 | 광학 문자 인식(OCR) 문제에서 입력에 주어지는 모든 단어의 길이는 10 이하입니다. |
9.6 | 295 | 소제목 "모든 신호 만들기" => "k-1개 건너뛰기" |
10.3 | 379 | 수식 $e_{p[x]} \ge e_{p[x]}$ => $e_{p[x]} \ge e_{p[y]}$ (제보자: 장윤석) |
10.7 | 391 | 그림 10.6(b)에서 ${r}\atop{2}$ => $\frac{r}{2}$ |
11.8 | 440 | 코드 11.12의 int l = setSize(set), s = setSum(set); 에서 각각 getSize() , getSum() 이 맞습니다. (제보자: zzapcoder) |
13.5 | 483 | "이때 0번 선수의 기록을 $cheater(r)$ .." => "이때 $n-1$번 선수의 기록을 $cheater(r)$ .." (제보자: 장윤석) |
14.4 | 504 | 67500의 소인수 분해 결과는 $2^2 \cdot 3^3 \cdot 5^4$입니다. (제보자: 송재원) |
15.5 | 539 | 코드 15.8의 reflect() 에는 here 입력이 필요 없습니다. (제보자: zzapcoder) |
17.3 | 604 | 수식 $psum[K] = \left ( \sum_{j=0}^{i}D[j] \right )$ mod $K$의 $psum[K]$는 $psum[i]$로 바뀌어야 합니다. (제보자: 장재현) |
17.3 | 606 | 코드 17.4의 ret += ((count[i] * (count[i] - 1)) / 2) % MOD 는 ret = (ret + ((count[i] * (count[i] - 1)) / 2)) % MOD; 로 바뀌어야 합니다. (제보자: 김재겸) |
20.5 | 666 | 코드 20.9의 Comparator 클래스 생성자를 Comparator(const vector<int>& _group, int _t): group(_group), t(_t) {} 로 변경해야 컴파일됩니다. (제보자: 이도경) |
24.8 | 760 | 코드 24.8, 24.9에 문제의 이름이 잘못 적혀 있습니다. (제보자: zzapcoder) |
28.6 | 847 | 단어 제한 끝말잇기 해법의 오류에 관하여 (제보자: 이현종) |
28.7 | 856 | 코드 28.9 가운데의 주석 "그 번호가 자기 자신 이하라면 현재 위치는 절단점!" 은 "그 노드가 자기 자신 이하에 있다면 현재 위치는 절단점!" 으로 쓰는 것이 더 이해하기 쉽습니다. (제보자: 박찬제) |
28.10 | 869 | 세 번째 예제 입력을 다음으로 정정합니다. 3 / 2 5 6 9 / 1 3 8 10 / 4 7 11 12 (/ 는 줄바꿈 표시) (제보자: 장윤석) |
32.2 | 996 | 코드 32.1의 너비 우선 탐색에서 while(!q.empty()) 대신 while(!q.empty() && parent[sink] == -1) 을 사용하면 훨씬 빨라집니다. (제보자: 이태윤) |
마지막 업데이트: 2013년 5월 7일