728x90
반응형
https://www.acmicpc.net/problem/1715
1715번: 카드 정렬하기
정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장
www.acmicpc.net
문제 해결
- 작은 수의 카드 묶음의 크기를 가진 것 부터 계산을 하는 것이 이득이라는 것을 알 수 있다.
- 리스트를 쓰고 sort를 쓰면 시간 초과가 난다.
- 우선순위 큐 (heapq 나 PriorityQueue를 쓰면 좋겠다는 생각으로 풀었다.
CODE
import sys
import heapq
n = int(input())
A = []
for _ in range(n):
heapq.heappush(A, int(input()))
ans = 0
while len(A)>1:
a = heapq.heappop(A)
b = heapq.heappop(A)
c = a+b
ans += c
heapq.heappush(A,c)
print(ans)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1456 거의 소수 (0) | 2023.02.23 |
---|---|
[python] 백준 1744 수 묶기 (0) | 2023.02.23 |
[python] 백준 2343 기타 레슨 (0) | 2023.02.23 |
[python] 백준 2023 신기한 소수 (0) | 2023.02.22 |
[python] 백준 10989 수 정렬하기 3 (0) | 2023.02.22 |
댓글