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

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

by 책만 2020. 7. 21.

# 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 이슈를 읽어주시기 바랍니다.

 

댓글18