https://www.acmicpc.net/problem/1715
๐ ๋ฌธ์
์ ๋ ฌ๋ ๋ ๋ฌถ์์ ์ซ์ ์นด๋๊ฐ ์๋ค๊ณ ํ์. ๊ฐ ๋ฌถ์์ ์นด๋์ ์๋ฅผ 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๊ฐ์ ์ซ์ ์นด๋ ๋ฌถ์์ ๊ฐ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ง ๋, ์ต์ํ ๋ช ๋ฒ์ ๋น๊ต๊ฐ ํ์ํ์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ ์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 100,000) ์ด์ด์ N๊ฐ์ ์ค์ ๊ฑธ์ณ ์ซ์ ์นด๋ ๋ฌถ์์ ๊ฐ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ง๋ค. ์ซ์ ์นด๋ ๋ฌถ์์ ํฌ๊ธฐ๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์์ด๋ค.
๐ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต์ ๋น๊ต ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ ํ์ด ๋ฐฉ์
๊ฐ์ฅ ์์ ๋๊ฐ์ ์นด๋๋ฅผ ๊ฐ์ ธ์์ ๋ํด์ฃผ๋ฉด ๋๋ ๊ฐ๋จํ ๋ฌธ์ ์ ๋๋ค.
N = 4 ์ด๊ณ ์นด๋๊ฐ 30 / 40 / 50 / 100 ์ผ ๋
(1) 30 + 40 = 70 [์นด๋ ๋ฌถ์ = 70 / 50 / 100]
(2) 50 + 70 = 120 [์นด๋ ๋ฌถ์ = 120 / 100]
(3) 100 + 120 = 220 [์นด๋ ๋ฌถ์ = 220]
๊ฐ์ฅ ์์ ๋๊ฐ์ ์นด๋๋ค์ ๊ฐ์ ธ์์ ๋ํด์ฃผ๊ณ ๋ํ ๊ฐ์ ๋ค์ ์นด๋ ๋ฌถ์์ผ๋ก ๋ฃ์ด์ค๋๋ค.
์์ ์์๋ฅผ ํตํด ์ ์ ์๋ฏ N-1 ๋งํผ ๋ฐ๋ณตํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๐ ํคํฌ์ธํธ
๊ณผ์ ์์ฒด๋ ์ฌ์ด๋ฐ ์ ๊ณจ๋ 4 ๋ฌธ์ ์ผ๊น์ ?
๊ฐ์ฅ ์์ ๋ ๊ฐ์ ์นด๋๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ธ์ค๋๊ฐ ๊ด๊ฑด์ธ๋ฐ ๋งค ๋ฐ๋ณต๋ง๋ค ์ ๋ ฌ์ ์ฌ์ฉํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ์ ์ด์ง์ฟต ํํธ๊ฐ ๋์ ์๋๋ฐ ์๊ฐ์ด๊ณผ๋ฅผ ํผํ๊ธฐ ์ํด์ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๐ ์ฝ๋
import heapq
n = int(input())
cards = []
[heapq.heappush(cards, int(input())) for _ in range(n)]
result = 0
for _ in range(n-1):
sum = heapq.heappop(cards) + heapq.heappop(cards)
heapq.heappush(cards, sum)
result += sum
print(result)
ํ์ด์ฌ์์๋ heap ์ ์ฌ์ฉํด์ ์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
PriorityQueue ๋ฅผ ์ ๊ณตํ๊ณ ์์ด์ ์ด๊ฑธ ์ฌ์ฉํ ์๋ ์์ง๋ง, ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ๋ ๊ณ ๋ คํ๊ธฐ์ heap ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ ์๊ฐ์ ๋ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฝ๋ฉ ํ ์คํธ์์๋ heap ๋ง ์ฌ์ฉํด๋ ์ถฉ๋ถํฉ๋๋ค
'๐ฉ๐ปโ๐ป ์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 15904๋ฒ UCPC๋ ๋ฌด์์ ์ฝ์์ผ๊น ? (Python) (0) | 2024.08.06 |
---|---|
[๋ฐฑ์ค] 1202๋ฒ ๋ณด์ ๋๋ (Python) (0) | 2024.08.01 |
[๋ฐฑ์ค] 1439๋ฒ ๋ค์ง๊ธฐ (Python) (0) | 2024.07.25 |
[๋ฐฑ์ค] 1789๋ฒ ์๋ค์ ํฉ (Python) (0) | 2024.07.23 |
[๋ฐฑ์ค] 1213๋ฒ ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (Python) (1) | 2024.07.22 |