๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/28107)
< ํ์ ์ด๋ฐฅ >
๋ฌธ์ ํ์ด
์ฐ์ ์์ ํ 2๊ฐ๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
1) ์๋์ ์ฃผ๋ฌธ ๋ชฉ๋ก ์ ์ฅํ๋ ์ฐ์ ์์ ํ [์ด๋ฐฅ ์ข ๋ฅ, ์๋ ๋ฒํธ]
2) ์๋ฆฌ๋๋ ์ด๋ฐฅ ์ข ๋ฅ ์ ์ฅํ๋ ์ฐ์ ์์ ํ
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class _28107_ { // ํ์ ์ด๋ฐฅ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
PriorityQueue<int[]> queue = new PriorityQueue<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0] == o2[0]) {
return o1[1] - o2[1];
}
return o1[0] - o2[0];
}
});
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
int k = Integer.parseInt(st.nextToken());
for (int j = 0; j < k; j++) {
queue.add(new int[] { Integer.parseInt(st.nextToken()), i });
}
}
PriorityQueue<Integer> num = new PriorityQueue<>();
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < m; i++) {
num.add(Integer.parseInt(st.nextToken()));
}
int result[] = new int[n];
while (!num.isEmpty()) {
if(queue.isEmpty()) {
break;
}
if (queue.peek()[0] == num.peek()) {
int temp[] = queue.poll();
num.poll();
result[temp[1]] += 1;
} else if (queue.peek()[0] > num.peek()) {
num.poll();
} else {
queue.poll();
}
}
for (int i = 0; i < n; i++) {
bw.write(result[i] + " ");
}
bw.flush();
}
}
Main
๋ณ์)
n : ์๋์ ์
m : ์ด๋ฐฅ์ ์
queue : PriorityQueue <int []>์ [์ด๋ฐฅ ์ข ๋ฅ, ์๋ ๋ฒํธ] ์ ์ฅ
num: PriorityQueue <Integer>์ ์๋ฆฌ๋๋ ์ด๋ฐฅ ์ข ๋ฅ ์ ์ฅ
result: i๋ฒ ์๋์ด ๋จน์ ์ด๋ฐฅ์ ๊ฐ์ ์ ์ฅ
- ์๋์ ์ (n)์ ์ด๋ฐฅ์ ์ (m) ์ ๋ ฅ
- ์ฐ์ ์์ ํ์ [์ด๋ฐฅ ์ข ๋ฅ, ์๋ ๋ฒํธ] ์ ๋ ฅ๋ฐ์ ์ ์ฅ (queue)
- ์ฐ์ ์์ ํ์ ์๋ฆฌ๋๋ ์ด๋ฐฅ ์ข ๋ฅ ์ ์ฅ (num)
- num์ด ๋น ๋๊น์ง ๋ฐ๋ณต
: queue๊ฐ ๋น์ด์๋ค๋ฉด ์๋์ด ์ด๋ฐฅ์ ๋จน์ง ์์ผ๋ฏ๋ก ์ข ๋ฃ
: queue์ num์ ์ด๋ฐฅ ์ข ๋ฅ๊ฐ ์ผ์นํ๋ค๋ฉด ๊ทธ ์๋์ด ์ด๋ฐฅ์ ๋จน์
: queue์ ๋งจ ์ ์ด๋ฐฅ ๋ฒํธ๊ฐ num์ ๋งจ ์ ์ด๋ฐฅ ๋ฒํธ๋ณด๋ค ํฌ๋ค๋ฉด num์ ๋งจ ์ ์ด๋ฐฅ์ ๋จน์ ์ผ์ด ์์ผ๋ฏ๋ก num.poll()
: num์ ๋งจ ์ ์ด๋ฐฅ ๋ฒํธ๊ฐ queue์ ๋งจ ์ ์ด๋ฐฅ ๋ฒํธ๋ณด๋ค ํฌ๋ค๋ฉด queue์ ๋งจ ์ ์ด๋ฐฅ์ด ์๋ฆฌ๋ ์ผ์ด ์์ผ๋ฏ๋ก queue.poll()
- result ๋ฐฐ์ด ์ถ๋ ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 24511_queuestack (0) | 2023.08.11 |
---|---|
[Baekjoon] 26042_์๋น ์ ๊ตฌ ๋๊ธฐ ์ค (0) | 2023.08.10 |
[Baekjoon] 1726_๋ก๋ด (0) | 2023.08.08 |
[Baekjoon] 5464_์ฃผ์ฐจ์ฅ (0) | 2023.08.08 |
[Baekjoon] 11559_Puyo Puyo (0) | 2023.08.07 |