https://www.acmicpc.net/problem/15903
15903번: 카드 합체 놀이
첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1,
www.acmicpc.net
# 우선순위 큐 구현
import heapq
n, m = map(int, input().split())
cards = list(map(int, input().split()))
heapq.heapify(cards) # 주어진 리스트를 힙 구조로 변환
# 힙 구조? 부모 노드의 값이 자식 노드의 값보다 작거나 같도록 하는 이진 트리
for i in range(m):
x = heapq.heappop(cards) # heap에서 가장 작은 항목을 pop하고 반환
y = heapq.heappop(cards)
heapq.heappush(cards, x+y) # cards 배열에 x+y를 push
heapq.heappush(cards, x+y)
print(sum(cards))
처음에 pop(0)로 했다가 맞긴 맞았는데 찝찝한(시간 오래걸림)느낌이 들어 다른 분들 코드를 확인
역시 pop(0)는 쓰는 게 아니야... deque도 쓰는 문제가 아니었음
'백준' 카테고리의 다른 글
백준 4883. 삼각 그래프 (0) | 2024.03.07 |
---|---|
백준 16139. 인간-컴퓨터 상호작용 (0) | 2024.03.06 |
백준 1072. 게임 (0) | 2024.03.05 |
백준 27737. 버섯 농장 (0) | 2024.03.05 |
백준 7562. 나이트의 이동 (0) | 2024.03.03 |