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๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์์ด๋ค.
3
10
20
40
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต์ ๋น๊ต ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
100
์ค๋ช
- ์ฒ์์ ๋ฐฐ์ด ์ ๋ ฌ์ ํด์ ๋จ์ํ ๋ํ์ง๋ง ํ๋ ธ๋ค...
- ์ฐ์ ์์ ํ์ ์นด๋์ ์ฐ์ฐ ๊ฐ์ ๊ณ์ ๋ํด์ค๋ค.
- ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํด N์ ๋ฒ์๊ฐ 1~100,000์ผ ๋ pq์ size๋ฅผ ์ด์ฉํด ํ์ด
์์ค์ฝ๋
ํ๋ฆฐ ์ฝ๋
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.util.Arrays; | |
import java.util.Collections; | |
public class Main { | |
public static void main(String[] args) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
int answer = 0; | |
int n = Integer.parseInt(br.readLine()); | |
int[] arr = new int[n]; | |
for (int i=0; i < n; i++) | |
arr[i] = Integer.parseInt(br.readLine()); | |
Arrays.sort(arr); | |
for(int i=0; i < n-1; i++) { | |
arr[i + 1] += arr[i]; | |
answer += arr[i+1]; | |
} | |
System.out.println(answer); | |
} | |
} |
PriorityQueue ํ์ด
import java.io.BufferedReader; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import java.util.PriorityQueue; | |
public class Main { | |
public static void main(String[] args) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
PriorityQueue<Integer> pq = new PriorityQueue<>(); | |
int answer = 0; | |
int n = Integer.parseInt(br.readLine()); | |
for (int i=0; i < n; i++) | |
pq.add(Integer.parseInt(br.readLine())); | |
while(pq.size() > 1){ | |
int card1 = pq.poll(); | |
int card2 = pq.poll(); | |
answer += card1 + card2; | |
pq.add(card1 + card2); | |
} | |
System.out.println(answer); | |
} | |
} |
'TIL (Today I Learned) > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1439๋ฒ ๋ค์ง๊ธฐ Java (0) | 2021.12.27 |
---|---|
[๋ฐฑ์ค] 1946๋ฒ Java (0) | 2021.12.20 |
[๋ฐฑ์ค] 10819 ์ฐจ์ด๋ฅผ ์ต๋๋ก (0) | 2021.12.17 |
[๋ฐฑ์ค] 1929๋ฒ ์์๊ตฌํ๊ธฐ JAVA (0) | 2021.12.16 |
[๋ฐฑ์ค] 2644 ์ด์ ๊ณ์ฐ (0) | 2021.12.15 |