성장일기

[python] 백준 13975 - 파일 합치기 3 본문

알고리즘 문제

[python] 백준 13975 - 파일 합치기 3

김몽몽 2022. 1. 20. 10:40

https://www.acmicpc.net/problem/13975

Q> 소설의 모든 장을 쓰고 각 장이 쓰여진 파일을 합쳐 최종본을 만든다

임시 파일을 합쳐 최종파일을 만든다.

파일들을 하나로 합칠 때 필요한 최소 비용을 계산

 

import sys
import heapq
input=sys.stdin.readline


n = int(input().rstrip())  # n번의 연산

for i in range(n) :
  length = int(input().rstrip()) # 카드 갯수의 길이
  cards = list(map(int,input().split()))  # 카드 받아오기

  heapq.heapify(cards)

  cnt = 0

  for j in range(length-1):  # 길이보다 한 번 적게 연산
    temp = heapq.heappop(cards)  # 가장 작은 수와
    temp2 = heapq.heappop(cards)  # 그 다음 작은 수

    temp_sum = temp + temp2 # 가장 작은 두 수를 더해서 cnt 누적
    cnt+=temp_sum
    heapq.heappush(cards,temp_sum)  # 더한 값을 다시 넣어줌

  print(cnt)

 

 

✨ 아래 문제들과 비슷

 

[python] 백준 1715 - 카드 정렬하기

Q> 두 묶음의 카드를 비교, 각 카드의 수가 20장, 30장이라면 비교하는데 20+30이라 할 때, 최소한 몇 번의 비교가 필요한지 출력 첫째 줄에 카드 묶음 N, 뒤의 N줄에 각 카드묶음의 크기 https://hyojeong9

hyojeong94.tistory.com

 

 

[python] 백준 15903 - 카드 합체 놀이

Q> n장의 카드 중 가장 작은 카드 두 개를 더해서 덮어 쓰는 형식, m번 반복했을 때 n장의 카드 합은? 🧨heapq로 풀 수 있다 PriorityQueue는 시간 초과😂 -> PriorityQueue에서 제공하는 동기화 때문에 느리

hyojeong94.tistory.com