문제 링크
https://www.acmicpc.net/problem/1715
1715번: 카드 정렬하기
정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장
www.acmicpc.net
문제 풀이
import heapq
nums = []
result = 0
n = int(input())
for _ in range(n):
heapq.heappush(nums, int(input()))
while len(nums) > 1:
n1 = heapq.heappop(nums)
n2 = heapq.heappop(nums)
heapq.heappush(nums, n1 + n2)
result += (n1 + n2)
print(result)
매번 가장 작은 두 숫자를 더하면 최솟값을 도출할 수 있다.
항상 정렬된 상태를 유지해야하므로 heapq를 사용했다.
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 5430 AC (파이썬 python) (1) | 2024.02.21 |
---|---|
[백준] 1766 문제집 (파이썬 python) (0) | 2024.02.20 |
[백준] 1202 보석 도둑 (파이썬 python) (1) | 2024.02.20 |
[백준] 1012 유기농 배추 (파이썬 python) (0) | 2024.02.14 |
[백준] 12851 숨바꼭질 2 (파이썬 python) (0) | 2024.02.14 |
문제 링크
https://www.acmicpc.net/problem/1715
1715번: 카드 정렬하기
정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장
www.acmicpc.net
문제 풀이
import heapq
nums = []
result = 0
n = int(input())
for _ in range(n):
heapq.heappush(nums, int(input()))
while len(nums) > 1:
n1 = heapq.heappop(nums)
n2 = heapq.heappop(nums)
heapq.heappush(nums, n1 + n2)
result += (n1 + n2)
print(result)
매번 가장 작은 두 숫자를 더하면 최솟값을 도출할 수 있다.
항상 정렬된 상태를 유지해야하므로 heapq를 사용했다.
'Algorithm > BOJ' 카테고리의 다른 글
[백준] 5430 AC (파이썬 python) (1) | 2024.02.21 |
---|---|
[백준] 1766 문제집 (파이썬 python) (0) | 2024.02.20 |
[백준] 1202 보석 도둑 (파이썬 python) (1) | 2024.02.20 |
[백준] 1012 유기농 배추 (파이썬 python) (0) | 2024.02.14 |
[백준] 12851 숨바꼭질 2 (파이썬 python) (0) | 2024.02.14 |