โฐ๋ฌธ์
์ ๋ ฌ๋ ๋ ๋ฌถ์์ ์ซ์ ์นด๋๊ฐ ์๋ค๊ณ ํ์. ๊ฐ ๋ฌถ์์ ์นด๋์ ์๋ฅผ 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๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต์ ๋น๊ต ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
3
10
20
40
์์ ์ถ๋ ฅ 1
100
๐กํ์ด
์ด ๋ฌธ์ ๋ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ๋ฌธ์ ๋ค.
์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํด์ผ ํจ.
1. ๊ฐ ์นด๋ ๋ฌถ์ ์๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉฐ ์ฐ์ ์์ ํ( pq )์ ์ ์ฅํ๋ค.
(์๋ฌด๋ฐ ์ค์ ๋ ํ์ง ์์ผ๋ฉด ๋ฎ์ ์ซ์ ์์ผ๋ก ์ฐ์ ์์๊ฐ ๊ฒฐ์ ๋๋ค.)
2. pq์ ๋งจ ์์ ๊ฐ์ ๊บผ๋ด๊ณ , ํ ๋ฒ ๋ ๊บผ๋ด์ด ๋ํด์ tmp ๋ณ์์ ์ ์ฅํ๋ค.
(๋ ๋ฒ ์ฐ์์ผ๋ก ๊บผ๋ด๋ฉด ๊ฐ์ด ์์ ์์๋๋ก ๋ ๊ฐ์ ์๊ฐ ๊บผ๋ด์ด์ง๋ค.)
3. ๋ ๋ฌถ์์ ๋น๊ตํ ํ์ tmp๋ฅผ ์ต์ข ํ์๋ฅผ ์ถ๋ ฅํ ๋ณ์ sum์ ๋ํ๋ค.
4. ๋ค์ ๋น๊ต ํ์๋ ์ด์ ์ ๋น๊ต ํ์์ ๋ํ ๊ฐ์ด๋ฏ๋ก tmp ๊ฐ์ pq์ ์ถ๊ฐํ๋ค.
(์ถ๊ฐํ๋ฉด ์๋์ผ๋ก ์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ์ฌ ์ ๋ ฌ ๋๋ค.)
5. ๋น๊ตํ ๊ฐ์ด ํ๋๋ง ๋จ์ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
โญ์ ์ถ ์ฝ๋
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt(); //์นด๋ ๋ฌถ์ ์
PriorityQueue<Integer> pq = new PriorityQueue<>();
for(int i=0; i<N; i++){
pq.add(scan.nextInt()); //๋ฎ์ ์ซ์ ์์ผ๋ก ์ฐ์ ์์ ๊ฒฐ์
}
int sum = 0;
while(pq.size() > 1){ //๋น๊ตํ ๊ฐ์ด ํ๋๋ง ๋จ์๋๊น์ง
int tmp = pq.poll() + pq.poll();
sum += tmp; //์์ ์ ๋ ๊ฐ๋ฅผ ๋ํด์ ๋ค์ ํ์ ์ถ๊ฐ
pq.add(tmp);
}
System.out.println(sum);
}
}
'๐ Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11866๋ฒ: ์์ธํธ์ค ๋ฌธ์ 0(Python) (0) | 2022.03.31 |
---|---|
[๋ฐฑ์ค] 2851๋ฒ: ์ํผ๋ง๋ฆฌ์ค(Python) (0) | 2022.03.31 |
[๋ฐฑ์ค] 1021๋ฒ: ํ์ ํ๋ ํ(Python) (0) | 2022.03.31 |
[๋ฐฑ์ค] 2460๋ฒ: ์ง๋ฅํ ๊ธฐ์ฐจ 2(Python) (0) | 2022.03.23 |
[๋ฐฑ์ค] 11399๋ฒ: ATM(Python) (0) | 2022.03.23 |