[백준] 1715번 카드 정렬하기 - 파이썬/그리디,우선순위 큐

JinUk Lee·2023년 1월 11일
0

백준 알고리즘

목록 보기
16/78

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

import heapq

N = int(input())

N_list = []

for i in range(N):

    N_list.append(int(input()))


heapq.heapify(N_list)


ans = 0

while True:

    if N==1:
        break

    elem1 = heapq.heappop(N_list)
    elem2 = heapq.heappop(N_list)

    print(elem1,elem2)
    sum_elem = elem1+elem2
    ans += sum_elem

    if not N_list:
        break

    heapq.heappush(N_list,sum_elem)


if N==1:
    print(N_list[0])
else:
    print(ans)

문제를 해결하기 위한 로직은 정렬 후 가장 작은 두개의 수를 뽑아 더하는 것을 반복하는 것이다.

그런데 정렬을 계속하면 시간초과가 발생하여 우선순위 큐(힙큐)를 사용하였다.

profile
개발자 지망생

0개의 댓글