dbswl4951   2년 전

아래 코드는 정답 코드입니다.

근데 heapq.heappush(q,a)와 heapq.heappop(q)의 순서가 바뀌면 틀렸습니다가 나오더라구요

push를 먼저 해주든, pop을 먼저 해주든 상관없다고 생각했는데 왜 꼭 push를 먼저 해줘야 하나요??

이해가 잘 안되네요 ㅜㅜ

n=int(sys.stdin.readline().strip())
q=[]

for a in map(int,sys.stdin.readline().split()):
    heapq.heappush(q,a)

for _ in range(1,n):
    for a in map(int,sys.stdin.readline().split()):
        heapq.heappush(q,a)
        heapq.heappop(q)
print(heapq.heappop(q))

sjyfantasy   2년 전

5번째를 찾는다고 생각합시다.

다 털고

로직상

힙에는 53 52 51 50 48이 있다고 가정합니다. 마지막에 47가 들어오고 47을 텁니다.


하지만 버리기를 먼저하면 48을 털고 47이 들어오겠죠

dbswl4951   2년 전

감사합니다 sjyfantasy님!

이해가 됐습니다ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.