출처 : https://www.acmicpc.net/problem/1715
1715번: 카드 정렬하기
정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장
www.acmicpc.net

1) 요구사항 분석 : 문제 읽기
비교하는 회수만큼 출력
2) 설계 : 접근 방식
가장 효율적인 방법은 현재 배열에 남아있는 가장 작은 값 2개를 비교!
배열에서 가장 작은 값을 계속 찾아줘야하니까 -> 우선순위 큐, 최소힙을 이용
import heapq
그리고 두개의 합을 다시 힙에 푸시해주기!

처음에 95%에서 틀렸는데 입력이 1개일 때 예외처리를 안해줘서,,
입력으로 1개 묶음의 카드가 들어오면 얘는 비교를 안해줘도 되니까, 이 땐 0을 출력
# BOJ1715 카드 정렬하기
import sys
import heapq
input = sys.stdin.readline
n = int(input())
heap = []
for i in range(n):
i = int(input())
heapq.heappush(heap, i)
start = 0
ans = 0
while len(heap) > 0:
tem = heapq.heappop(heap)
if start == 0:
start = tem
else:
ans += (start + tem)
if len(heap) != 0:
heapq.heappush(heap, start + tem)
start = 0
if start != 0:
ans += start
if n == 1:
ans = 0
print(ans)'알고리즘 > BOJ' 카테고리의 다른 글
| [BOJ / 백준] 2468 안전 영역 python / 파이썬 dfs (0) | 2023.09.13 |
|---|---|
| [BOJ / 백준] 1991 트리 순회 python / 파이썬 트리 (0) | 2023.09.10 |
| [BOJ / 백준] 11286 절댓값 힙 python / 파이썬 우선순위 큐 / 힙 (0) | 2023.08.18 |
| [BOJ / 백준] 1927 최소 힙 python / 파이썬 우선순위 큐 / 힙 (0) | 2023.07.25 |
| [BOJ / 백준] 11279 최대 힙 python / 파이썬 우선순위 큐 / 힙 (0) | 2023.07.14 |
댓글