본문 바로가기

백엔드/파이썬

파이썬 - heappop 주의 사항

반응형

널리 알려진 자료 구조인 힙.

 

 

요렇게 쓰고, heapq.heappop          heapq.heappush() 를 활용해서

최댓값, 최솟값을 구할 때

요긴하게 쓰고 있는데요,

 

오늘은 제가 한 실수에 대해서 얘기해보려고 합니다.

 

먼저 저는 리스트는 사용했고,

 

이 친구에게 값을 더해줄 때는 append를,

참고로 2번째로 나오는 인덱스들은, 음수 값으로 저장한 것들이다. 최댓값 구할 떄 쓰려고. 지금은 맨 첫번째 리스트들만 보자.

이후에는 꺼낼 때,

가장 작은 값을 꺼내려고,

요렇게 heappop를 사용했어요.

7, 5, -5 중에서 -5가 아니라 7이 삭제되더라구요.

 

 

** 해결

더해줄 때는 heappush로 더해주어서 인덱스 맨 앞이 가장 작은 값으로 해주는 것이 깔끔하다.

 

** 결론

그래서 heappop을 사용하실때는, 가장 앞에 인덱스를 가지고 오기 떄문에

(가장 작은 값을 자동으로 들고오지않아요. heappush로 매번 가장 작은 값을 0번째 인덱스에 넣어줬으면 몰라도.)

 

heappush와, heappop은 함께 사용하자.

 

 

 

 

이상 허접의 글이었습니다 ㅠㅠ

반응형

'백엔드 > 파이썬' 카테고리의 다른 글

python3와 pypy의 차이  (0) 2022.08.25
파이썬 - int() 함수의 또 다른 기능  (0) 2022.02.07
파이썬 - is와 ==  (0) 2022.01.14
파이썬 - 자료형, 추상화  (0) 2022.01.04
파이썬 - 리스트  (0) 2022.01.04