'POP' 태그의 글 목록 — 뚝딱이

POP

ERROR

[heapq] 파이썬 최소힙 pop()에서 최솟값이 안나올 때

문제 힙은 heapq를 사용하여 구현하는데 pop()을 했을 때, 최솟값이 나오지 않는 현상이 발생했다. 2차원에서는 2차원의 1번째 원소 값을 비교하여 최소값을 결정한다. disk [[3, 0]] [3, 0] disk [[8, 1], [4, 2]] [8, 1] disk [[4, 2]] [4, 2] 2번째 disk에서는 [4, 2]가 나와야하는데 [8, 1]이 나왔다. 이는 disk에 list 형태로 값을 넣어줘야해서 heapq 모듈의 push()가 아닌 list의 + 연산자를 사용했기 때문이다. list 연산자를 사용한 순간 list로 취급된다. 해결 heapq.heapify(disk) list 연산후에 다시 heap으로 바꿨다.

Python/이론, 기초

[Python] for문에서 pop 사용하기

for 문 안에서 pop을 사용하면 내가 생각한 대로 작동하지 않을 수 있다. 문제 a = [1,2,3,4] for i in a: print(a.pop(0)) print(a) 1, 2, 3, 4가 출력되고 a에 아무것도 남지 않기를 바랐는데 다음과 같은 결과가 나왔다. 왜 이런 결과가 나오게 됐을까? for문은 현재 a의 index를 따르기 때문이다. 해결 나같은 경우에는 list를 copy 하여 사용한다. a = [1,2,3,4] b = a.copy() for i in b: print(a.pop(0)) print(a) 이 방법이 아니더라도 자신의 쓰임에 맞게 쓰면 된다.

파송송
'POP' 태그의 글 목록