본문 바로가기

알고리즘/백준

[백준] 13975번 : 파일 합치기 3

728x90

13975번: 파일 합치기 3

 

13975번: 파일 합치기 3

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T개의 테스트 데이터로 이루어져 있는데, T는 입력의 맨 첫 줄에 주어진다.각 테스트 데이터는 두 개의 행으로 주어지는데,

www.acmicpc.net

🤔 문제분석

우선순위큐를 활용하여 가장 작은 파일부터 합쳐나아가는 문제입니다. 가장 작은 파일끼리 합쳐야 합의 가중치가 낮기때문입니다.

💻 코드

import sys
import heapq

input = sys.stdin.readline

T = int(input())

for _ in range(T):
    K = int(input())
    queue = []
    for file in list(map(int, input().split())):
        heapq.heappush(queue, file)
        
    cost = 0
    while len(queue) != 1:
        file1 = heapq.heappop(queue)
        file2 = heapq.heappop(queue)
        new_file = file1 + file2
        cost += new_file
        heapq.heappush(queue, new_file)
    
    print(cost)

🎯 피드백 및 개선사항

문제를 읽자마자 바로 파일을 작은순서부터 더해가면되겠다고 생각이 되어서 우선순위 큐를 활용하였습니다.

728x90

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 4803번 : 트리  (1) 2024.02.26
[백준] 16120번 : PPAP  (0) 2024.02.26
[백준] 16724번 : 피리부는사나이  (1) 2024.02.24
[백준] 14725번 : 개미굴  (1) 2024.02.24
[백준] 1351번 : 무한수열  (0) 2024.02.24