๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver3] 15903๋ฒˆ_์นด๋“œ ํ•ฉ์ฒด ๋†€์ด

Dbswnstjd 2023. 5. 29. 10:14

๋ฌธ์ œ

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

 

15903๋ฒˆ: ์นด๋“œ ํ•ฉ์ฒด ๋†€์ด

์ฒซ ๋ฒˆ์งธ ์ค„์— ์นด๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜ n(2 ≤ n ≤ 1,000)๊ณผ ์นด๋“œ ํ•ฉ์ฒด๋ฅผ ๋ช‡ ๋ฒˆ ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜ m(0 ≤ m ≤ 15×n)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„์— ๋งจ ์ฒ˜์Œ ์นด๋“œ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” n๊ฐœ์˜ ์ž์—ฐ์ˆ˜ a1,

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 15903๋ฒˆ ๋ฌธ์ œ - ์นด๋“œ ํ•ฉ์ฒด ๋†€์ด 
import sys
import heapq
input = sys.stdin.readline

n, m = map(int, input().split())
cards = list(map(int, input().split()))
heapq.heapify(cards)
for i in range(m):
    value = heapq.heappop(cards) + heapq.heappop(cards)
    for _ in range(2):
        heapq.heappush(cards, value)
answer = 0 
while cards:
    answer += heapq.heappop(cards)
print(answer)

Heap ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๋งŒ๋“ ๋‹ค.

ํŒŒ์ด์ฌ์˜ Heap์€ ์ตœ์†Œํž™์ด๋ฏ€๋กœ ๋”ฐ๋กœ ๊ตฌํ˜„์„ ํ•ด์ค„ ํ•„์š”๋Š” ์—†๋‹ค. [์ตœ๋Œ€ ํž™์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด -1 ์„ ์‚ฌ์šฉํ•ด ์ •๋ ฌ]

 

ํž™์—์„œ pop์„ 2๋ฒˆ ํ•˜๊ณ  ๋”ํ•œ ๊ฐ’๋“ค์„ ๋‹ค์‹œ ํž™์— 2๋ฒˆ ๋„ฃ์–ด์ค€๋‹ค.