[실버 1] 백준 15903 - 카드 합체 놀이 (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/15903
풀이
- 숫자 카드 N장이 주어짐
- M번에 걸쳐 가장 작은 두 장을 골라 합친 뒤, 그 값을 두 장 모두에 덮어 씌움
- 최종 카드들의 합을 구하라
from queue import PriorityQueue
N, M = map(int, input().split())
A = list(map(int, input().split()))
- N: 카드 개수
- M: 합체 횟수
- A: 카드에 적힌 숫자들
pq = PriorityQueue()
for x in A :
pq.put(x)
최소 힙을 활용하기 위해서 PrioirtyQueue에 모든 값을 넣는다. (기본적으로 오름차순 우선순위로 동작한다.)
for _ in range(M) :
x = pq.get()
y = pq.get()
pq.put(x + y)
pq.put(x + y)
가장 작은 카드 2장 x, y를 꺼낸다.
그 합 x + y를 2당 모두로 다시 삽입한다.
sum = 0
while pq.qsize() != 0 :
sum += pq.get()
print(sum)
큐에 남은 카드 숫자들을 모두 더한다.
코드
# 백준 15903 - 카드 합체 놀이
# 분류 : 우선 순위 큐
from queue import PriorityQueue
N, M = map(int, input().split())
A = list(map(int, input().split()))
pq = PriorityQueue()
for x in A :
pq.put(x)
for _ in range(M) :
x = pq.get()
y = pq.get()
pq.put(x + y)
pq.put(x + y)
sum = 0
while pq.qsize() != 0 :
sum += pq.get()
print(sum)
'Programming > 백준' 카테고리의 다른 글
[골드 4] 백준 4803 - 트리 (파이썬) (0) | 2025.05.12 |
---|---|
[골드 4] 백준 7662 - 이중 우선순위 큐 (파이썬) (0) | 2025.05.11 |
[골드 5] 백준 2166 - 다각형의 면적 (파이썬) (0) | 2025.05.10 |
[골드 3] 백준 1005 - ACM Craft (파이썬) (0) | 2025.05.10 |
[골드 3] 백준 16947 - 서울 지하철 2호선 (파이썬) (0) | 2025.05.10 |
댓글
이 글 공유하기
다른 글
-
[골드 4] 백준 4803 - 트리 (파이썬)
[골드 4] 백준 4803 - 트리 (파이썬)
2025.05.12 -
[골드 4] 백준 7662 - 이중 우선순위 큐 (파이썬)
[골드 4] 백준 7662 - 이중 우선순위 큐 (파이썬)
2025.05.11 -
[골드 5] 백준 2166 - 다각형의 면적 (파이썬)
[골드 5] 백준 2166 - 다각형의 면적 (파이썬)
2025.05.10 -
[골드 3] 백준 1005 - ACM Craft (파이썬)
[골드 3] 백준 1005 - ACM Craft (파이썬)
2025.05.10