본문 바로가기
알고리즘/자료구조

[백준][Python] 23757번 아이들과 선물 상자

by 임짠짠 2022. 12. 21.
반응형
 

23757번: 아이들과 선물 상자

모든 아이들이 실망하지 않고 각자 원하는 만큼 선물을 가져갈 수 있으면 $1$을, 그렇지 않으면 $0$을 출력한다.

www.acmicpc.net

 

코드

import sys
import heapq
n,m = map(int,input().split())
c = list(map(int,sys.stdin.readline().split()))
w = list(map(int,sys.stdin.readline().split()))
hq = []
for i in c:
	heapq.heappush(hq,-i)

for i in w:
	mx = -heapq.heappop(hq)
	if mx < i:
		print(0)
		exit()
	heapq.heappush(hq,-(mx-i))
	
print(1)

 

설명

파이썬은 기본이 최소힙이기 때문에 최대힙으로 만들려면 값을 넣어줄 때 - 를 붙여서 넣어야 한다. 그럼 큰 숫자가 가장 작은 수로 변하여 pop을 했을 때 가장 먼저 나오게 된다.

 

가장 큰 숫자를 pop 해주고 아이가 원하는 선물의 개수와 비교하여 원하는 선물 개수보다 작으면 0을 출력하고 코드를 끝낸다. 더 크면 해당 값만큼 빼준 뒤 - 를 붙여서 다시 힙에 넣어준다.

반응형

댓글