티스토리 뷰
https://www.acmicpc.net/problem/15903
👩💻문제 이해
합이 최소가 되도록 해야하기 떄문에 heappop 두 번으로 가장 작은 숫자를 가진 card 두장을 뽑은 후,
두 장을 더한 값을 다시 heappush로 넣어주면 된다.
👩💻heappop, heappush, heapify를 사용한 코드 : 성공🌈
# 15903번 : 카드 합체 놀이
from heapq import heappop, heappush, heapify
n, m = map(int, input().split())
cards = [int(i) for i in input().split()]
# cards 리스트를 heap으로 변환
heapify(cards)
for i in range(m):
card1 = heappop(cards)
card2 = heappop(cards)
heappush(cards, card1+card2)
heappush(cards, card2+card1)
print(sum(cards))
✨Point✨
1. list안에 정수값 한줄로 받기
[int(i) for i in input().split()]
2. list -> heap 전환
heapify(list)
'🦖 Programming > Python' 카테고리의 다른 글
[Python] 백준 알고리즘 1260번 : DFS와 BFS (0) | 2022.10.12 |
---|---|
[Python] ⭐️백준 알고리즘 1655번 : 가운데를 말해요 (0) | 2022.10.07 |
[Python] 백준 알고리즘 2075번 : N번째 큰 수 (1) | 2022.10.07 |
[Python] 백준 알고리즘 11286번 : 절댓값 힙 (1) | 2022.10.06 |
[Python] 백준 알고리즘 11279번 : 최대 힙 (1) | 2022.10.05 |
댓글