Code/Python

[Python] 백준 1715번 카드 정렬하기

ki1111m2 2023. 10. 8. 17:32

그리디 알고리즘과 우선순위 큐를 이용한 문제

# 카드 정렬하기
# 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다.
# N개의 숫자 카드 묶음의 각각의 크기가 주어질 때, 최소한 몇 번의 비교가 필요한지를 구하는 프로그램을 작성하시오.
# 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 100,000) 이어서 N개의 줄에 걸쳐 숫자 카드 묶음의 각각의 크기가 주어진다. 숫자 카드 묶음의 크기는 1,000보다 작거나 같은 양의 정수이다.
# 첫째 줄에 최소 비교 횟수를 출력한다.

from queue import PriorityQueue

n = int(input())
queue = PriorityQueue()

for i in range(n):
    queue.put(int(input()))

sum = 0

while queue.qsize() > 1:
    data1 = queue.get()
    data2 = queue.get()
    now = data1 + data2
    sum += now
    queue.put(now)

print(sum)

'Code > Python' 카테고리의 다른 글

[Python] 백준 1931번 회의실 배정  (1) 2023.10.23
[Python] 백준 1744번 수 묶기  (1) 2023.10.08
[Python] 백준 11047번 동전 0  (0) 2023.10.07
[Python] 백준 1300번 K번째 수  (1) 2023.10.06
[Python] 백준 2343번 기타 레슨  (0) 2023.10.05