๋ฌธ์
์ ๋ ฌ๋ ๋ ๋ฌถ์์ ์ซ์ ์นด๋๊ฐ ์๋ค๊ณ ํ์. ๊ฐ ๋ฌถ์์ ์นด๋์ ์๋ฅผ 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๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต์ ๋น๊ต ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
https://www.acmicpc.net/problem/1715
๐ก ํ์ด ๋ฐ ์ฝ๋
import heapq
import sys
input = sys.stdin.readline
n = int(input())
card = []
for _ in range(n):
num = int(input())
heapq.heappush(card, num)
result = 0
while len(card)>1:
n1 = heapq.heappop(card)
n2 = heapq.heappop(card)
result += n1 + n2
heapq.heappush(card, n1+n2)
print(result)
์ต๋ํ ์์ ์๋ค๋ผ๋ฆฌ ๋จผ์ ๋ฌถ์ด์ผ ๋น๊ต ํ์๊ฐ ์ต์๊ฐ ๋๋ค๋ ์์ด๋์ด ์์ฒด๋ ์ด๋ ต์ง ์๋ค. ํ์ง๋ง ๊ตฌํ๊ณผ์ ์์ ๋ฆฌ์คํธ์ sort ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ ํจ์จ์ฑ ์ธก๋ฉด์ ํ๊ณ๋ฅผ ๋๊ปด ๊ฒฐ๊ตญ ์ฐ์ ์์ ํ๋ฅผ ์ ์ฉํ๋ค. ์ฐ์ ์์ ํ ๋ฌธ์ ๋ฅผ ์ฒ์ ์ ํด๋ณธ ๋งํผ ์ฐ์ ์์ ํ ๊ฐ๋ ์ ๋ฆฌ์ ๊ตฌํ ๋ณต์ต์ ์ ํด์ผํ ๊ฒ ๊ฐ๋ค.
'Algorithm > ๐ Baekjoon Judge' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ๋ฐฑ์ค 1463๋ฒ 1๋ก ๋ง๋ค๊ธฐ - ํ์ด์ฌ(Python) (0) | 2021.09.10 |
---|---|
[BOJ] ๋ฐฑ์ค 16953๋ฒ A๋ฅผ B๋ก ๋ฐ๊พธ๊ธฐ (A->B) - ํ์ด์ฌ(Python) (0) | 2021.08.26 |
[BOJ] ๋ฐฑ์ค 1789๋ฒ ์๋ค์ ํฉ - ํ์ด์ฌ(Python) (0) | 2021.08.26 |
[BOJ] ๋ฐฑ์ค 2473๋ฒ ์ธ ์ฉ์ก - ํ์ด์ฌ(Python) (3) | 2021.08.24 |
[BOJ] ๋ฐฑ์ค 2470๋ฒ ๋ ์ฉ์ก - ํ์ด์ฌ(Python) (0) | 2021.08.24 |