olrlobt
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋4] #1715 ์นด๋ ์ ๋ ฌํ๊ธฐ ๋ณธ๋ฌธ
๐ ๊ณจ๋4 - #1715 ์นด๋ ์ ๋ ฌํ๊ธฐ
๐ ํ ์คํธ์ผ์ด์ค ์ถ๊ฐ ํํธ
5
10
20
10
10
40
= 190
4
10
10
10
30
= 110
โ๏ธ ํ์ด๋ฒ
ํด๋น ๋ฌธ์ ๋ ์ดํดํ๋ค๊ณ ์๊ฐํด๋ ํท๊ฐ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ ๊ฒ ๊ฐ๋ค.
ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ธ์ฐ๊ณ ๋ฌธ์ ๋ฅผ ํ ๋, ๋ํ ๊ฐ๋ค์ ํ ๋ฒ์ฉ ์ฐ๋ฉด์ ๋ค ํฉ์น ์ดํ.
์ด ๊ฐ๋ค์ ๋ค ๋ํด์ฃผ์ด์ผ ๋ต์ด ๋์ค๊ฒ ๋๋ค๋ ์ ์ ์๊ณ ์งํํ๋ฉด, ์ดํดํ๊ธฐ ํธํ ๊ฒ ๊ฐ๋ค.
์ฒซ ๋ฒ์งธ ์ผ์ด์ค๋ฅผ ์๋ก ๋ค์๋ฉด, 90์ด ๋์ค๋ ๊ณผ์ ์์ ๋ชจ๋ ์นด๋๊ฐ ํฉ์ณ์ง๊ฒ ๋๋ค.
์ด ํ, ํ๋ ๊ฐ ( ๋ํ ๊ณผ์ ์์ ๋์จ ๊ฐ) ๋ค์ ๋ค ํฉ์น๋ฉด ์ํ๋ ์ ๋ต 190 ์ด ๋์ค๊ฒ ๋๋ค.
์ด ๋ฌธ์ ๋ ํ ๋๋จผํธ ๋ฐฉ์์ ์ฌ์ฉํ๋ คํ๊ฑฐ๋, ๋ฆฌ๊ทธ ๋ฐฉ์์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์ ๋๋ค.
์๋ํ๋ฉด, ๊ฐ์ฅ ์์ ์นด๋ ๋ญ์น๋ถํฐ ๋ญ์ณ์ฃผ์ด์ผ, ์ต์๊ฐ์ด ๋์ค๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ์นด๋ ๋ญ์น๋ฅผ ๋ญ์น๊ณ , ๋ค์ ๋น๊ตํด ์ฃผ๋ ์์ ์ ํด ์ฃผ์ด์ผ ํ๋ค.
์๋ฅผ๋ค์ด, ๋๋ฒ์งธ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ณด์.
๋จ์ํ๊ฒ ํ ๋๋จผํธ ๋ฐฉ์์ผ๋ก ์๊ฐํ๊ฒ๋๋ฉด, ์ ๋ต์ 110์ธ๋ฐ, 120์ด ๋์ค๊ฒ ๋๋ฏ๋ก ์ค๋ต์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ 110์ด ๋์ค๊ฒ ํ ์ ์์๊น?
๋ฐ๋ก
ํ ๋๋จผํธ๊ฐ ์๋, ํ ๋ญ์น๋ฅผ ํฉ์น๊ณ ์ฒ์๋ถํฐ ์๋ก ๋น๊ตํ๋ ๊ฒ์ด๋ค.
์ฒซ๋ฒ์งธ ๋น๊ต๊ฐ ๋๋ ํ, ๋จ์ ์นด๋ ๋๋ฏธ๋ [ 20, 10, 30 ] ์ด๋ค. ํ ๋๋จผํธ ๋๋ก๋ผ๋ฉด 10๊ณผ 30 ์ ํฉ์ณค์ง๋ง,
์ฐ๋ฆฌ๋ ์ต์๊ฐ์ ๊ตฌํด์ผ ํ๋ฏ๋ก, 10๊ณผ 20์ ํฉ์น๋ ๊ฒ์ด ๋ง๋ค.
๋ฐ๋ผ์, ํ ๋ฒ ํฉ์น๋ ์์ ์ดํ์ ์๋ก ์ ๋ ฌํ๊ณ ๋ค์ ๋น๊ตํ๋ ์์ ์ด ํ์ํ๋ค.
๋๋ ์ฒ์์ ํ ๋๋จผํธ๋ก ํ๋ ค๊ณ ํ์๊ธฐ ๋๋ฌธ์ Queue๋ฅผ ์ฌ์ฉํ์๋ค. ์ ๋๋ค๋ ๊ฑธ ๊นจ๋ฌ์ ์ดํ, ์ ๋ ฌ์ ์๋์ผ๋ก ํด ์ฃผ๊ธฐ ์ํ์ฌ ์ฐ์ ์์ ํ (PriorityQueue)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
ํ์ด ๊ณผ์
1. ์์ ์ ์ ๋ ฌ
2. ๊ฐ์ฅ ์์ ๋ ๋ฑ์ ํฉ์น๋ค.
3. ์ ๊ณผ์ ์ ๋ฑ์ ์๊ฐ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
๐๏ธ ํ์ด
import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Scanner;
public class baekjoon1715 {
private static int sum = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
List<Integer> decks = new ArrayList<>();
for (int time = 0; time < N; time++) {
decks.add(sc.nextInt());
}
solve(decks);
System.out.println(sum);
}
public static void solve(List<Integer> decks) {
PriorityQueue<Integer> queDeck = new PriorityQueue<>(decks);
sumDecks(queDeck);
}
private static void sumDecks(PriorityQueue<Integer> decks) {
if (decks.size() == 1) {
return;
}
int sumTwin = decks.poll() + decks.poll();
sum += sumTwin;
decks.add(sumTwin);
sumDecks(decks);
}
}
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #13164 ํ๋ณต ์ ์น์ (1) | 2023.01.01 |
---|---|
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋3] #13904 ๊ณผ์ (0) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋2] #2437 ์ ์ธ (1) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #12904 A์ B (0) | 2022.12.31 |
[์๋ฐ/๋ฐฑ์ค ๊ณจ๋5] #2212 ์ผ์ (0) | 2022.12.31 |