본문 바로가기
+ 도서 오류 정보

[정오표] 파이썬 알고리즘 인터뷰

by 책만 2020. 7. 21.

# 2023년 2월 1일 종이책 6쇄 / 전자책 v4.0 정오표

 

p190. 10번 문제의 리트코드 링크가 변경됨

https://leetcode.com/problems/array-partition-i/ https://leetcode.com/problems/array-partition/

 

p391. 본문 6~7째 줄 설명 수정

다시 정리하면, 최종적으로 거리는 왼쪽 자식 노드의 리프 노드에서 현재 노드까지의 거리(상태값)와, 오른쪽 자식 노드의 리프 노드에서 현재 노드까지의 거리(상태값)의 합에 2(현재 노드와 왼쪽, 오른쪽 자식 노드와의 거리)를 더한 값과 같다.

다시 정리하면, 최종적으로 거리는 왼쪽 자식 노드의 리프 노드에서 현재 노드까지의 거리와 오른쪽 자식 노드의 리프 노드에서 현재 노드까지의 거리의 합이며, 이는 왼쪽 자식 노드의 상태값과 오른쪽 자식 노드의 상태값의 합에 2를 더한 값과 같다.

 

# 2022년 6월 15일 전자책 v3.0 정오표

p630. 풀이 3 타뷸레이션 코드 4행

self.dp[0] = 1
→ 

self.dp[0] = 0

 

p696. 본문 5째 줄

문자열 "FRENCH" 와 "FRENCH"가 주어졌을때
→ 

문자열 "FRANCE" 와 "FRENCH"가 주어졌을때

 

# 2022년 2월 7일 종이책 5쇄 / 2021년 3월 2일 전자책 v2.0 정오표

p222. 본문 첫 번째 코드 블록의 1행 중

def toList(self, node: List:) -> List:

→ 
def toList(self, node: ListNode) -> List:
 

p.455 <참고> 박스 중 6째 줄

가장 큰 값을 추출하거나(최대 힙) 가장 작은 값을 추출하려면(최소 힙)
→ 

가장 큰 값을 조회하거나(최대 힙) 가장 작은 값을 조회하려면(최소 힙)

 

p696. 본문 5째 줄

문자열 "FRENCH" 와 "FRENCH"가 주어졌을때
→ 

문자열 "FRANCE" 와 "FRENCH"가 주어졌을때

 

# 2021년 8월 10일 종이책 4쇄 / 2021년 3월 2일 전자책 v2.0 정오표

p.122 표 5-2의 3번째 항목 a[i:j] 설명부

i부터 j까지 슬라이스의 길이만큼인 k개의 요소를 가져온다.

인덱스 i부터 j-1까지 슬라이스의 길이만큼인 k개의 요소를 가져온다.

 

p613. 본문 밑에서 4째 줄

이 경우 비둘기집 원리(28페이지 참고) -> 이 경우 비둘기집 원리(282페이지 참고) 

 

 

 

# 2020년 10월 30일 전자책 v1.0 정오표

 

p85. enumerate 설명 1째줄

순서가 있는 자료형
여러 가지 자료형

※ 이와 관련한 자세한 설명은 #73 이슈를 읽어주시기 바랍니다.

 

p185. 코드 중 아래에서 2째줄

results.append((nums[i], nums[j], nums[k]))
results.append([nums[i], nums[j], nums[k]])

p188. 코드 중 10째줄

results.append((nums[i], nums[left], nums[right]))
results.append(

[nums[i], nums[left], nums[right]])

※ 이와 관련한 자세한 설명은 #53 이슈를 읽어주시기 바랍니다.

 

p307. 본문 1째 줄

>>> k번 이상 등장하는

>>> 상위 k번 이상 등장하는

 

p307. 풀이 1째 줄

>>> k번반큼 추출하면

>>> 상위 k번만큼 추출하면

p309. 풀이 1째 줄

>>> k 빈도 이상의

>>> 상위 k번만큼의

※ 이와 관련한 자세한 설명은 #51 이슈를 읽어주시기 바랍니다.

 

p318. 본문 3째 줄

그림 12-1와 같은

그림 12-2와 같은

※ 이와 관련한 자세한 설명은 #64 이슈를 읽어주시기 바랍니다.

 

p324. 밑에서 8째 줄

if not w in discovered:->if w not in discovered:

※ 이와 관련한 자세한 설명은 #65 이슈를 읽어주시기 바랍니다.

 

pp.338-340 33. '전화번호 문자 조합' 문제 풀이 관련

※ 본문의 설명이 틀린 것은 아니지만, 좀 더 효율적인 풀이를 보시려면 #91 이슈를 읽어주시기 바랍니다.

 

p366. 5째 줄

그림 12-8과 같이
 
그림 12-18과 같이

 

p470. 13째 줄

['d', 'dcbbc', 'bbcd', 'cbcd', 'cbbc', 'dcbb']->['d', 'cbbcd', 'dcbb', 'dcbc', 'cbbc', 'bbcd']

※ 이와 관련한 자세한 설명은 #72 이슈를 읽어주시기 바랍니다.

 

p475. 본문 4째 줄

클래스와 독립적으로 함수로서의

클래스와 독립적 함수로서의

※ 이와 관련한 자세한 설명은 #81 이슈를 읽어주시기 바랍니다.

 

p537. 풀이 1째 줄

행column
→ 

열column

※ 이와 관련한 자세한 설명은 #80 이슈를 읽어주시기 바랍니다.

 

p549. 밑에서 8째 줄

>>> 5 & -4

>>> 5 -4

※ 이와 관련한 자세한 설명은 #49 이슈를 읽어주시기 바랍니다.

 

p572. 본문 3째 줄

이 경우 시간 복잡도는 O(n)이다 -> 이 경우 시간 복잡도는 O(k*n)이다

※ 이와 관련한 자세한 설명은 #67 이슈를 읽어주시기 바랍니다.

 

p613. 그림 22-4 중 하단 우측 상자

[1,5]

[1,1]

※ 이와 관련한 자세한 설명은 #57 이슈를 읽어주시기 바랍니다.

 

p630. 풀이 3 타뷸레이션 코드 3-4행에 중간 1행 추가

def fib(self, N: int) -> int:

    self.dp[0] = 0
    self.dp[1] = 1

 

p645. 3행

dp[0], dp[1] = nums[0], max(

dp[0], dp[1])

dp[0], dp[1] = nums[0], max(nums[0], nums[1])

※ 이와 관련한 자세한 설명은 #58 이슈를 읽어주시기 바랍니다.

 

# 2020년 7월 15일 초판 1쇄본 정오표 #

p110. 본문 1~2째 줄

집합은 딕셔너리 동일하게 -> 집합은 딕셔너리 동일하게

 

p260. 밑에서 7째 줄

리어Rear 포인터가 원래의 프론트 포인터 자리까지 -> rear 포인터가 원래의 front 포인터 자리까지

 

p274. 27번 문제의 [입력] 부분 

→ 전체 1개의 박스로 묶여야 합니다.

● 입력

[

  1->4->5,

  1->3->4,

  2-5

]

 

 

p299. 첫 번째 코드블록에서 첫 행 'B' : 1, 빠져야 합니다.

 

{     

    'a': 1,

    'A': 2,

    'b': 4

}

 

p331. [예제 2] 출력 값 1 오류

[예제 2]

● 출력

1 -> 3

 

p399. 3번째 문단 1째 줄

이 그림에서 여기서 -> 이 그림에서 

 

p552. 밑에서 2째 줄

침체기에 들었다. -> 침체기에 빠들었다.

 

 

# 2020년 8월 5일 2쇄 정오표 # (1쇄본도 확인 바랍니다)

 

p56. 자바 코드 마지막 행 중괄호 누락

sum += i;

->
sum += i;
}
※ 이와 관련한 자세한 설명은 #46 이슈를 읽어주시기 바랍니다.
 

p85. enumerate 설명 1째줄

순서가 있는 자료형
->

여러 가지 자료형

※ 이와 관련한 자세한 설명은 #73 이슈를 읽어주시기 바랍니다.

 

p101. 4째 줄 / 6째 줄

상수항은 -> 계수는

 

p101. 아래에서 7째 줄

최댓값 또는 최솟값 경우가 -> 최댓값 또는 최솟값을 찾는 경우가

※ 이와 관련한 자세한 설명은 #47 이슈를 읽어주시기 바랍니다.

 

p152. 7째 줄

return max(counts , key=count.get) -> return max(counts, key=counts.get)

 

p154. 풀이1의 전체 코드 中 마지막 행 수정

return anagrams.values() -> return list(anagrams.values())

※ 여기서 수정된 반환형과 관련한 자세한 설명은 #6 이슈를 읽어주시기 바랍니다.

 

p161. 본문 두 번째 코드 블록의 3, 4행 중 "s, " 삭제

expand(s, i, i + 1), 

expand(s, i, i + 2), 

->
expand(i, i + 1), 
expand(i, i + 2), 
 

p161. 하단 박스 4행

while left >= 0 and right <= len(s) and s[left] == s[right - 1]:
->
while left >= 0 and right < len(s) and s[left] == s[right]:
※ 이와 관련한 자세한 설명은 #38 이슈를 읽어주시기 바랍니다.

 

p161. 하단 박스 7행

return s[left + 1:right -1] -> return s[left + 1:right]

 

p163. 아래에서 3째 줄

값이 128이하라면 -> 값이 127이하라면

※ 이와 관련한 자세한 설명은 #45 이슈를 읽어주시기 바랍니다.
 

p174. 본문 두 번째 코드 블록의 마지막 행

return nums.index(n), nums[i + 1:].index(complement) + (i + 1)
->
return 

[nums.index(n), nums[i + 1:].index(complement) + (i + 1)]

※ 이와 관련한 자세한 설명은 #32 이슈를 읽어주시기 바랍니다.
 

p175. 본문 코드 블록의 마지막 행

return nums.index(num), nums_map[target - num]
->
return 

[

i, nums_map[target - num]

]

※ 이와 관련한 자세한 설명은 #39 이슈를 읽어주시기 바랍니다.
 

p177. 풀이5의 전체 코드 中 주석 위치 바뀜

(상략) 

    while not left == right:

        # 합이 타겟보다 작으면 왼쪽 포인터를 오른쪽으로

        if nums[left] + nums[right] < target:

            left += 1

        # 합이 타겟보다 크면 오른쪽 포인터를 왼쪽으로

 

        elif nums[left] + nums[right] > target:

(하략)

 

p177. 풀이5의 전체 코드 中 마지막 행

return left, right 

-> 

return 

[

left, right

]

 

p185. 전체 코드 중 1행: 예약어 def 오타 (d 누락)

ef threeSum(self, nums: List[int]) -> List[List[int]]:

->

def threeSum(self, nums: List[int]) -> List[List[int]]:

 

p185. 아래에서 2째줄

results.append((nums[i], nums[j], nums[k]))

->

results.append([nums[i], nums[j], nums[k]])

p188. 코드 중 10째줄

results.append((nums[i], nums[left], nums[right]))

->

results.append(

[nums[i], nums[left], nums[right]])

※ 이와 관련한 자세한 설명은 #53 이슈를 읽어주시기 바랍니다.

 

 

p211. [다중 할당] 문법 참고 박스: 밑에서 5째 줄

파이썬에는 원시  타입이 존재하지 않다. -> ~ 존재하지 않다.

 

p216. 표 안 우선순위 14번 줄

\| -> |

 

p222. 본문 첫 번째 코드 블록의 1행 중

def toList(self, node: ListNode) -> ListNode

->

def toList(self, node: ListNode) -> List:

 

p222. 본문 두 번째 코드 블록의 1행 중

def toReversedLinkedList(self, result: ListNode) -> ListNode:

->

def toReversedLinkedList(self, result: str) -> ListNode:

 

p223. 박스 안 13째 줄

def toList(self, node: ListNode) -> ListNode

->

def toList(self, node: ListNode) -> List:

 

p224. 박스 안 2째 줄

def toReversedLinkedList(self, result: ListNode) -> ListNode:

->

def toReversedLinkedList(self, result: str) -> ListNode:

※ 이와 관련한 자세한 설명은 #31 이슈를 읽어주시기 바랍니다.

 

p282. 밑에서 2-3째 줄

10개의 공간 중 1개밖에 -> 9개의 공간 중 1개밖에

 

p292. 두 번째 문단 첫 줄

삭제 emove()의 -> 삭제 remove()

 

p307. 본문 1째 줄

>>> k번 이상 등장하는

->

>>> 상위 k번 이상 등장하는

 

p307. 풀이 1째 줄

>>> k번반큼 추출하면

->

>>> 상위 k번만큼 추출하면

 

p309. 풀이 1째 줄

>>> k 빈도 이상의

->

>>> 상위 k번만큼의

※ 이와 관련한 자세한 설명은 #51 이슈를 읽어주시기 바랍니다.

p318. 본문 3째 줄

그림 12-1와 같은 -> 

그림 12-2와 같은

※ 이와 관련한 자세한 설명은 #64 이슈를 읽어주시기 바랍니다.

 

p324. 밑에서 8째 줄

if not w in discovered:->if w not in discovered:

※ 이와 관련한 자세한 설명은 #65 이슈를 읽어주시기 바랍니다.

 

pp.338-340 33. '전화번호 문자 조합' 문제 풀이 관련

※ 본문의 설명이 틀린 것은 아니지만, 좀 더 효율적인 풀이를 보시려면 #91 이슈를 읽어주시기 바랍니다.

 

p347. 본문 첫 번째 코드 블록의 3행 아래 행 추가

p347. 박스 안 6째 줄 아래 행 추가

results.append(elements[:])

->

results.append(elements[:])

return

※ 이와 관련한 자세한 설명은 #30 이슈를 읽어주시기 바랍니다.

 

p350. 박스 안 6째 줄

60에서 6을 나눈 6/60=10이 -> 60 6으로 나눈 60/6=10이

 

p366. 5째 줄

그림 12-8과 같이-> 그림 12-18과 같이

 

p368. 풀이 전체 코드 중 15행

# 이미 방문했던 노드이면 False -> # 이미 방문했던 노드이면 True

 

p450. 아래에서 10째 줄

while parent >= 0: -> while parent > 0: 

※ 이와 관련한 자세한 설명은 #48 이슈를 읽어주시기 바랍니다.
 

p456. 풀이 전체 코드 중 8행

p457. 첫 번째 박스 안 6째 줄

for _ in range(k):

->

for _ in range(1, k):

※ 이와 관련한 자세한 설명은 #30 이슈를 읽어주시기 바랍니다.

 

p470. 13째 줄

['d', 'dcbbc', 'bbcd', 'cbcd', 'cbbc', 'dcbb']->['d', 'cbbcd', 'dcbb', 'dcbc', 'cbbc', 'bbcd']

※ 이와 관련한 자세한 설명은 #72 이슈를 읽어주시기 바랍니다.

 

p473. 박스 안 23째 줄 삭제

node = node.children[char]

 

node.val = char

->

node = node.children[char]

※ 이와 관련한 자세한 설명은 #40 이슈를 읽어주시기 바랍니다.

 

p475. 본문 4째 줄

클래스와 독립적으로 함수로서의 -> 

클래스와 독립적 함수로서의

※ 이와 관련한 자세한 설명은 #81 이슈를 읽어주시기 바랍니다.

 

p502. 아래에서 10째 줄

cur보다 작은 상태라면 -> cur보다  상태라면

※ 이와 관련한 자세한 설명은 #41 이슈를 읽어주시기 바랍니다.
 

p520. 풀이 4 첫 줄

이진 검색을 사용하 풀었지만 -> 이진 검색을 사용하 풀었지만

※ 이와 관련한 자세한 설명은 #44 이슈를 읽어주시기 바랍니다.
 

p537. 풀이 1째 줄

행column -> 

열column

※ 이와 관련한 자세한 설명은 #80 이슈를 읽어주시기 바랍니다.

 

p549. 밑에서 8째 줄

>>> 5 & -4

->

>>> 5 -4

※ 이와 관련한 자세한 설명은 #49 이슈를 읽어주시기 바랍니다.
 

p572. 본문 3째 줄

이 경우 시간 복잡도는 O(n)이다 -> 이 경우 시간 복잡도는 O(k*n)이다

※ 이와 관련한 자세한 설명은 #67 이슈를 읽어주시기 바랍니다.

 

p613. 그림 22-4 중  하단 우측 상자

[1,

5] -> [1,1]

※ 이와 관련한 자세한 설명은 #57 이슈를 읽어주시기 바랍니다.

 

p630. 풀이 3 타뷸레이션 코드 3-4행에 중간 1행 추가

def fib(self, N: int) -> int:

    self.dp[0] = 0
    self.dp[1] = 1

 

p640. 그림 23-9 첫 번째 우측 자식 노드 오타 (그림 내 빨간 글씨 부분)

n-1 계단 -> n-2 계단

 

p645. 3행

dp[0], dp[1] = nums[0], max(

dp[0], dp[1])

->

dp[0], dp[1] = nums[0], max(nums[0], nums[1])

※ 이와 관련한 자세한 설명은 #58 이슈를 읽어주시기 바랍니다.

 

p692. 밑에서 3째 줄

간단히  단위로 -> 간단히 단위로

 

p693. 초 -> 분 일괄 변경

 

p694. 박스 안 3 째 줄

1 전 도착 -> 1  전 도착

 

p694. 박스 안 10 째 줄

, 초로 다시 변경 -> , 분으로 다시 변경

※ 이와 관련한 자세한 설명은 #34 이슈를 읽어주시기 바랍니다.

 

댓글