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 \leq N \leq 100,000\)) ์ด์ด์ N๊ฐ์ ์ค์ ๊ฑธ์ณ ์ซ์ ์นด๋ ๋ฌถ์์ ๊ฐ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ง๋ค. ์ซ์ ์นด๋ ๋ฌถ์์ ํฌ๊ธฐ๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต์ ๋น๊ต ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
๋ญ๊ฐ ๋๊ฒ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํด์ ๋๋...๋ค๐คทโ๏ธ
a, b์ ๋น๊ต ํ์๋ a + b ์ธ๋ฐ, ์ต์ ๋น๊ต ํ์๋ฅผ ๊ตฌํ๋ ค๋ฉด ์นด๋ ๋ฌถ์์ ํฌ๊ธฐ๋ค์ PriorityQueue์ ์ ์ฅํด์ ํฌ๊ธฐ๊ฐ ์์ ์์ผ๋ก ๋ ๊ฐ์ฉ ๋ํด์ ๋ค์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ 1๊ฐ๊ฐ ๋จ์ ๋๊น์ง ์งํํ๋ฉด ๋๋ค โผ๏ธ
๊ฒฐ๊ณผ๋ ๊ฐ ๋ํ ๊ฐ์ ๋ชจ๋ ๋ํด์ฃผ๋ฉด ๋์ ๐โ๏ธ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
public class Main_BOJ_1715_์นด๋์ ๋ ฌํ๊ธฐ{
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PriorityQueue<Integer> pq = new PriorityQueue<>();
int N = Integer.parseInt(br.readLine());
for(int i = 0 ; i < N ; i++){
int x = Integer.parseInt(br.readLine());
pq.add(x);
}
int ans = 0;
while(pq.size() > 1){
int a = pq.poll();
int b = pq.poll();
ans += a+b;
pq.add(a+b);
}
System.out.println(ans);
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 16943 ] ์ซ์ ์ฌ๋ฐฐ์น ( ์๋ฐ / JAVA ) (0) | 2021.10.28 |
---|---|
[ ๋ฐฑ์ค / BOJ 18405 ] ๊ฒฝ์์ ์ ์ผ ( ์๋ฐ / JAVA ) (0) | 2021.10.28 |
[ ๋ฐฑ์ค / BOJ 1717 ] ์งํฉ์ ํํ ( ์๋ฐ / JAVA ) (0) | 2021.10.27 |
[ ๋ฐฑ์ค / BOJ 20665 ] ๋ ์์ค ๊ฑฐ๋ฆฌ๋๊ธฐ ( ์๋ฐ / JAVA ) (0) | 2021.10.27 |
[ ๋ฐฑ์ค / BOJ 16928 ] ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ ( ์๋ฐ / JAVA ) (0) | 2021.10.27 |