본문 바로가기
PS/백준

[테스트케이스추가] 백준 1715번: 카드 정렬하기

by 지기_ 2021. 8. 6.
반응형

1. 문제

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

 

1715번: 카드 정렬하기

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

www.acmicpc.net

 

 

2. 풀이

우선순위 큐

 

 

3. 구현

import sys
# sys.stdin = open('input.txt')
import heapq
lis = []
n = int(sys.stdin.readline().strip())
while n:
    n-=1
    tmp = int(sys.stdin.readline().strip())
    heapq.heappush(lis, tmp)
    
answer=0
# if len(lis)==1 -> no comparision
while len(lis)>1:
    a=heapq.heappop(lis)
    b=heapq.heappop(lis)
    answer+=(a+b)
    heapq.heappush(lis, a+b)
sys.stdout.write(str(answer))

 

 

4. 반례 + 테케

 

@bamgoesn  님

4
30
40
50
100

답: 410

 

4
30
40
50
60

답: 360

 

8
30
40
50
20
10
100
60
120

답: 1160

 

8
30
40
50
20
10
100
60
10

답: 860

 

4
120
40
100
20

답: 500

반응형

댓글