알고리즘
[그리디/heapq] 백준.1715 카드 정렬하기 (python)
yjenis
2024. 7. 2. 22:34

이론 정리
- 그리디: 현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알고리즘
- 핵심이론: 1) 해 선택 2) 적절성 검사 3) 해 검사
- 우선순위 큐
- 큐는 FIFO 형식의 자료구조
- 우선순위 큐는 들어오는 순서가 아니라, 우선순위가 높은 데이터가 먼저 나가는 형식의 자료구조
- 일반적으로 힙을 이용하여 구현
- 힙 구현 방법
- import heapq
- 빈 리스트 만들어서 갑 넣기
- heapq 활용 형식
- !!!힙은 최소가 디폴트 방식이니 최대힙을 구현하기 위해서는 음수 값을 활용
- 최대힙을 구현할 땐 최대힙, 최소힙 빈 리스트 따로 만들어서 시작
- min_heap = []
- max_heap = []
- heapq.heappush(리스트 이름, 넣을 요소)
- heapq.heappop(리스트 이름)
문제 링크
https://www.acmicpc.net/problem/1715
문제

나의 풀이
import heapq
N=int(input())
pq=[]
for _ in range(N):
pq.append(int(input()))
pq.sort()
total=0
while len(pq)>1:
temp=0
a=heapq.heappop(pq)
b=heapq.heappop(pq)
temp+=a
temp+=b
heapq.heappush(pq,temp)
total+=temp
print(f'{total}')