반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

1715 카드정렬하기(heap 활용) 본문

코딩 테스트(Python)/백준, 프로그래머스

1715 카드정렬하기(heap 활용)

5_hyun 2022. 1. 18. 00:17
반응형

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

 

1715번: 카드 정렬하기

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

www.acmicpc.net

내가 푼 풀이(맞음)

import heapq

n = int(input())
heap = []
for i in range(n):
    x = int(input())
    heapq.heappush(heap, x)
result = 0
while(len(heap) != 1):
    sum = 0
    a = heap[0]
    heapq.heappop(heap)
    a += heap[0]
    heapq.heappop(heap)
    sum += a
    result += sum
    heapq.heappush(heap, sum)
    
print(result)

처음에 heap 안쓰고 list로 푸니까 시간 초과 떴었음, 그래서 heap으로 풀라는 힌트 살짝 보고 풀음

heap 쓸려면 import heapq 써야된다. 그리고 힙에 추가하려면 heapq.heappush(리스트 이름, 값)으로 한다.

그리고 힙의 0번째를 호출하면 무조건 최소값이 나온다. 하지만 1번째 자리가 그 다음으로 작은 값은 아니다. 그래서 heapq.heappop(리스트 이름)을 하면 가장 최소값이 삭제된다. 가장 최소값을 삭제하고 그 다음 최소값을 찾는다.

 

 

반응형

'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글

15903 카드 합체 놀이  (0) 2022.01.18
2847 게임을 만든 동준이  (0) 2022.01.18
2720 세탁소사장동혁  (0) 2022.01.17
1049 기타줄  (0) 2022.01.16
1543 문서검색  (0) 2022.01.16
Comments