-
[Python] 백준 13975 파일 합치기 3알고리즘/문제풀이 2021. 11. 26. 17:10728x90
1. 문제 링크
https://www.acmicpc.net/problem/13975
2. 문제 요약
두 개의 파일을 계속 합하여 최종적으로 하나의 파일을 완성하는데 필요한 비용의 총합을 구한다.
3. 아이디어 정리
- 우선순위 큐 최소힙을 이용하여 가장 작은 2개의 파일을 얻는다.
- 두 파일을 합하여 다시 최소 힙에 넣고 파일이 1개가 될 때까지 진행한다.
4. 문제 풀이
4-1. 내 풀이
import sys import heapq for _ in range(int(sys.stdin.readline())): k = int(sys.stdin.readline()) arr = list(map(int, sys.stdin.readline().split())) heapq.heapify(arr) # 최소힙 result = 0 # 가장 작은 2개의 파일 크기를 꺼내서 합친값을 다시 우선순위 큐에 넣기 while len(arr) >= 2: f = heapq.heappop(arr) s = heapq.heappop(arr) result += (f + s) heapq.heappush(arr, (f + s)) print(result)
5. 결론
- 우선순위 큐(최소힙) 이용한 문제
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 백준 21921 블로그 (0) 2021.11.27 [Python] 백준 12865 평범한 배낭 (0) 2021.11.27 [Python] 백준 4358 생태학 (0) 2021.11.26 [Python] Programmers 위클리 12주차 피로도 (0) 2021.11.03 [Python] 백준 1476 날짜계산 (0) 2021.11.03