โ๋ฌธ์
https://www.acmicpc.net/problem/1715
๋ฉ๋ชจ๋ฆฌ: 36292 KB, ์๊ฐ: 156 ms
์๋ฃ ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ์ฐ์ ์์ ํ
์ ๋ ฌ๋ ๋ ๋ฌถ์์ ์ซ์ ์นด๋๊ฐ ์๋ค๊ณ ํ์. ๊ฐ ๋ฌถ์์ ์นด๋์ ์๋ฅผ A, B๋ผ ํ๋ฉด ๋ณดํต ๋ ๋ฌถ์์ ํฉ์ณ์ ํ๋๋ก ๋ง๋๋ ๋ฐ์๋ A+B ๋ฒ์ ๋น๊ต๋ฅผ ํด์ผ ํ๋ค. ์ด๋ฅผํ ๋ฉด, 20์ฅ์ ์ซ์ ์นด๋ ๋ฌถ์๊ณผ 30์ฅ์ ์ซ์ ์นด๋ ๋ฌถ์์ ํฉ์น๋ ค๋ฉด 50๋ฒ์ ๋น๊ต๊ฐ ํ์ํ๋ค.
๋งค์ฐ ๋ง์ ์ซ์ ์นด๋ ๋ฌถ์์ด ์ฑ ์ ์์ ๋์ฌ ์๋ค. ์ด๋ค์ ๋ ๋ฌถ์์ฉ ๊ณจ๋ผ ์๋ก ํฉ์ณ๋๊ฐ๋ค๋ฉด, ๊ณ ๋ฅด๋ ์์์ ๋ฐ๋ผ์ ๋น๊ต ํ์๊ฐ ๋งค์ฐ ๋ฌ๋ผ์ง๋ค. ์๋ฅผ ๋ค์ด 10์ฅ, 20์ฅ, 40์ฅ์ ๋ฌถ์์ด ์๋ค๋ฉด 10์ฅ๊ณผ 20์ฅ์ ํฉ์น ๋ค, ํฉ์น 30์ฅ ๋ฌถ์๊ณผ 40์ฅ์ ํฉ์น๋ค๋ฉด (10 + 20) + (30 + 40) = 100๋ฒ์ ๋น๊ต๊ฐ ํ์ํ๋ค. ๊ทธ๋ฌ๋ 10์ฅ๊ณผ 40์ฅ์ ํฉ์น ๋ค, ํฉ์น 50์ฅ ๋ฌถ์๊ณผ 20์ฅ์ ํฉ์น๋ค๋ฉด (10 + 40) + (50 + 20) = 120 ๋ฒ์ ๋น๊ต๊ฐ ํ์ํ๋ฏ๋ก ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
N๊ฐ์ ์ซ์ ์นด๋ ๋ฌถ์์ ๊ฐ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ง ๋, ์ต์ํ ๋ช ๋ฒ์ ๋น๊ต๊ฐ ํ์ํ์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ๐ปํ์ด
์นด๋ ๋ฌถ์์ ์๋ฅผ ์ ์ ๋ฌถ์ ์์๋๋ก ์ค๋ค๊ณ ๋ณด์ฅํ ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ์นด๋์ ๋ฌถ์ ์๊ฐ ์ ์ ๊ฒ 2๊ฐ๋ฅผ heappopํ๋ค. ์ด ๋, heap์ ์ต์ํ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์นด๋ ๋ฌถ์์ ํฉ์ณ์ ๋ค์ ๋ฃ๋๋ค. ์ด๋ฅผ ๋น๊ตํ๋ฉด์ ํฉ์น ์นด๋๊ฐ 1๊ฐ๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
๐ป์ฝ๋
import sys
from heapq import heappush, heappop
input = sys.stdin.readline
N = int(input())
card = [int(input()) for _ in range(N)]
card.sort()
res = 0
while len(card) > 1:
a, b = heappop(card), heappop(card)
heappush(card, a + b)
res += (a + b)
print(res)
๐ํ๊ธฐ
๋๋ฌด ๊ฐ๋จํ๊ฒ ํ๋ ค์ ๋ฌธ์ ๋ ๋ฒจ ์ธก์ ์ด ์๋ชป๋ ๊ฑฐ๋ผ๋ ์๊ฐ์ ์ ๊น ํ๋ค..
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1202. ๋ณด์ ๋๋/Python - Gold2 (0) | 2025.02.28 |
---|---|
[๋ฐฑ์ค] 1655. ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์/Python - Gold2 (0) | 2025.02.26 |
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ]์บ์/Python - Lv.2 (0) | 2025.02.21 |
[๋ฐฑ์ค] 18870. ์ขํ ์์ถ/Python - Silver2 (0) | 2025.02.19 |
[๋ฐฑ์ค] 2206. ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ/Python - Gold 3 (0) | 2025.02.12 |