🗂️ 문제
링크: https://www.acmicpc.net/problem/14235
14235번: 크리스마스 선물
크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만
www.acmicpc.net
💡 접근법
heapq 라이브러리를 사용하여 a가 0이 아니라면 선물의 가치를 heap에 저장하고, a가 0이라면 선물의 가치가 큰 순서대로 힙에서 요소를 꺼내 출력한다. 이때 힙에 남아있는 요소의 개수가 0이라면 -1을 출력한다.
또한 최대힙을 구성하기 위해 push할때 -부호를 붙여서 힙에 요소를 넣어주고, pop할 때는 -부호를 붙여서 출력한다.
😎 내 코드
import sys
import heapq
N = int(sys.stdin.readline())
present = []
for _ in range(N):
A = sys.stdin.readline().rstrip()
if A == '0':
if len(present) == 0:
print(-1)
else:
print(-heapq.heappop(present))
else:
A = list(map(int, A.split()))
for i in range(1, len(A)):
heapq.heappush(present, -A[i])
👀 배운 코드
import sys
import heapq
N = int(sys.stdin.readline())
present = []
for _ in range(N):
A = list(map(int, sys.stdin.readline().split()))
if A[0] == 0:
if len(present) == 0:
print(-1)
else:
print(-heapq.heappop(present))
else:
for i in range(1, len(A)):
heapq.heappush(present, -A[i])
🧐 배운 점
- 한 줄에 입력되는 값의 형태가 0인 경우와 2 3 2인 두 경우에 대해 split()을 하고 해당 결과를 list()로 변환하면 결과는 [0], [2, 3, 2]가 된다. 이를 통해 입력되는 값의 형태가 다르더라도 하나의 변수(A)를 사용하여 저장될 수 있도록 한다.
✅ 정답 확인
'Algorithm > Baekjoon' 카테고리의 다른 글
[힙] 백준 #2696 중앙값 구하기 - Python (2) | 2024.03.13 |
---|---|
[힙] 백준 #1655 가운데를 말해요 - Python (0) | 2024.03.12 |
[힙] 백준 #2075 N번째 큰 수 - Python (1) | 2024.03.08 |
[힙, 정렬] 백준 #2571 수 정렬하기 2 - Python (0) | 2024.03.08 |
[그리디] 백준 #1541 잃어버린 괄호 - Python (0) | 2024.03.05 |