본문 바로가기
알고리즘/그리디

[백준][Python] 1715번 카드 정렬하기

by 임짠짠 2022. 5. 4.
반응형
 

1715번: 카드 정렬하기

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

www.acmicpc.net

 

코드

import heapq
import sys 

n = int(input())
h = []
for _ in range(n):
    num = int(sys.stdin.readline())
    heapq.heappush(h,num)

if n == 1:
    print(0)
    exit()
answer = 0
while len(h)>1:
    a = heapq.heappop(h)
    b = heapq.heappop(h)
    sum = a+b
    answer+=sum
    heapq.heappush(h,sum)
print(answer)

 

설명

전에 올린 파일합치기3 문제와 동일하다. 힙을 이용해서 작은 수 두 개를 뽑아서 더해준 뒤 다시 힙에 넣어주면 된다.

2022.05.03 - [알고리즘/그리디] - [백준][Python] 13975번 파일 합치기 3

 

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

13975번: 파일 합치기 3 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T개의 테스트 데이터로 이루어져 있는데, T는 입력의 맨 첫 줄에 주어진다.각 테스트 데이터는 두 개

imzzan.tistory.com

대신 이 문제에서는 주어진 묶음이 하나이면 비교할 묶음이 없기 때문에 0을 출력해줘야 한다.

 

반응형

댓글