๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/23843)
< ์ฝ์ผํธ >
๋ฌธ์ ํ์ด
๊ฐ์ด ํฐ ๊ฒ์ ์ฐ์ ์ผ๋ก ํ๋ ์ฐ์ ์์ ํ A์ ์ถฉ์ ์ ํ์ํ ์๊ฐ์ ์ ์ฅํ๋ค.(=์ถฉ์ ์๊ฐ์ด ๋ง์ ์๋๋ก ์ ๋ ฌ)
๊ฐ์ด ์์ ๊ฒ์ ์ฐ์ ์ผ๋ก ํ๋ ์ฐ์ ์์ ํ B์ A๋ฅผ ์ฝ์ผํธ ๊ฐ์๋งํผ ๋ฃ์ด์ค๋ค.
์ถฉ์ ์๊ฐ์ ๊ณ์ฐํด ์ค๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class _23843_ { // ์ฝ์ผํธ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
st = new StringTokenizer(bf.readLine());
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < n; i++) {
queue.add(Integer.parseInt(st.nextToken()));
}
PriorityQueue<Integer> socket = new PriorityQueue<>();
ArrayList<Integer> list = new ArrayList<>();
int result = 0, num=0;
while (!queue.isEmpty()) {
if (socket.size() < m) {
socket.add(queue.poll());
} else {
num=socket.poll();
result += num;
while(!socket.isEmpty()) {
int x =socket.poll()-num;
if(x>0) {
list.add(x);
}
}
for(int i=0; i<list.size(); i++) {
socket.add(list.get(i));
}
list.clear();
}
}
while(!socket.isEmpty()) {
num=socket.poll();
}
result+=num;
System.out.println(result);
}
}
Main
๋ณ์)
n : ์ ์๊ธฐ๊ธฐ์ ๊ฐ์
m : ์ฝ์ผํธ ๊ฐ์
queue : PriorityQueue <Integer> ์ถฉ์ ์ ํ์ํ ์๊ฐ ์ ์ฅ (๋ด๋ฆผ์ฐจ์)
socket : PriorityQueue <Integer> ์ฝ์ผํธ (์ค๋ฆ์ฐจ์)
result : ์ถฉ์ ์ ํ์ํ ์ต์ ์๊ฐ
num : ๊ฐ ์ ์ฅํ๋ ๋ณ์
- ์ ์๊ธฐ๊ธฐ์ ๊ฐ์(n), ์ฝ์ผํธ ๊ฐ์(m) ์ ๋ ฅ
- ์ถฉ์ ์ ํ์ํ ์๊ฐ n๊ฐ๋ฅผ ์ ๋ ฅ๋ฐ์ queue์ ์ ์ฅ
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต
: socket์ ํฌ๊ธฐ๊ฐ ์ฝ์ผํธ์ ๊ฐ์(m) ๋ณด๋ค ์๋ค๋ฉด ์ถฉ์ ํ ์ ์์ผ๋ฏ๋ก queue์์ poll ํด์ socket์ ์ ์ฅ
: socket์ ํฌ๊ธฐ๊ฐ ์ฝ์ผํธ ๊ฐ์๋ผ๋ฉด socket์์ ๊ฐ์ poll ํด์ ์ถฉ์ ์ํด
: ์ถฉ์ ์ํค๋ฉด socket์ ์๋ ๋๋จธ์ง ์ ์๊ธฐ๊ธฐ๋ ๊ทธ๋งํผ ์ถฉ์ ๋ผ์ผ ํ๋ฏ๋ก ๋ค poll ํด์ ์์์ ์ถฉ์ ํ ๋งํผ ๋นผ์ ๋ค์ socket์ ์ ์ฅ
- ๋ง์ง๋ง์ ์ถฉ์ ๋๋ ์ ์๊ธฐ๊ธฐ๋ socket์ ๋ง์ง๋ง ๊ฐ์ด ์ต๋๊ฐ์ด๋ฏ๋ก ๋ค poll ํ ํ ๋ง์ง๋ง ๊ฐ๋ง result์ ๋ํจ
- ์ถฉ์ ์ ํ์ํ ์ต์ ์๊ฐ(result) ์ถ๋ ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1343_ํด๋ฆฌ์ค๋ฏธ๋ ธ (0) | 2023.09.11 |
---|---|
[Baekjoon] 1976_์ฌํ ๊ฐ์ (0) | 2023.09.01 |
[Baekjoon] 25381_ABBC (0) | 2023.08.30 |
[Baekjoon] 25497_๊ธฐ์ ์ฐ๊ณ๋ง์คํฐ ์์ค (0) | 2023.08.29 |
[Baekjoon] 2257_ํํ์๋ (0) | 2023.08.28 |