๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/3018)
< ์บ ํํ์ด์ด >
๋ฌธ์ ํ์ด
๊ฐ ์ฌ๋์ด ์๋ ๋ ธ๋๋ฅผ ArrayList <HashSet>์ ์ ์ฅํ๋ค. ๋ง์ฝ 1 = [2], 2 = [3], 3 = [1]์ธ ๊ฒฝ์ฐ 2๋ฒ๊ณผ 3๋ฒ์ด ์บ ํํ์ด์ด์ ์ฐธ์ฌํ๋ค๋ฉด ์๋ก ์๋ ๋ ธ๋๋ฅผ ๊ณต์ ํ๋ค. ์๋ก ๊ณต์ ํ๋ฉด 1 = [2], 2 = [1,3], 3 = [1,3] ์ด ๋๋ค.
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.ArrayList;
import java.util.HashSet;
import java.util.StringTokenizer;
public class _3018_ { // ์บ ํํ์ด์ด
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;
int n = Integer.parseInt(bf.readLine());
int e = Integer.parseInt(bf.readLine());
ArrayList<HashSet<Integer>> list = new ArrayList<>();
for (int i = 0; i <= n; i++) {
list.add(new HashSet<>());
}
int idx = 0;
for (int i = 0; i < e; i++) {
st = new StringTokenizer(bf.readLine());
int k = Integer.parseInt(st.nextToken());
int num[] = new int[k];
boolean flag = false;
for (int j = 0; j < k; j++) {
num[j] = Integer.parseInt(st.nextToken());
if (num[j] == 1) {
flag = true;
}
}
if (flag) {
idx += 1;
for (int j = 0; j < k; j++) {
list.get(num[j]).add(idx);
}
} else {
for (int j = 0; j < k; j++) {
for (int l = 0; l < k; l++) {
if (j == l) {
continue;
}
for (int m : list.get(num[j])) {
list.get(num[l]).add(m);
}
}
}
}
}
for (int i = 1; i <= n; i++) {
if (list.get(i).size() == idx) {
bw.write(i + "\n");
}
}
bw.flush();
}
}
๋ณ์)
n : ์ฐธ๊ฐํ ์ฌ๋ ์
e : ์กฐ๊ฑด ์
list : ArrayList <HashSet> ๊ฐ ์ฌ๋์ด ์๋ ๋ ธ๋ ๋ฒํธ
idx : ๋ ธ๋ ๋ฒํธ
k : ๊ทธ๋ ์บ ํํ์ด์ด์ ์ฐธ๊ฐํ ์ฌ๋์ ์
num : ์ฐธ๊ฐํ ์ฌ๋์ ๋ฒํธ๋ฅผ ์ ์ฅํ ๋ฐฐ์ด
flag : 1๋ฒ ์ฐธ๊ฐ์ฌ๋ถ
์ฐธ๊ฐํ ์ฌ๋์ ์ n๊ณผ ์กฐ๊ฑด ๊ฐ์ e๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. e๋งํผ ์บ ํํ์ด์ด์ ์ฐธ๊ฐํ ์ฌ๋์ ์ k์ ์ฐธ๊ฐํ ์ฌ๋์ ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ฐธ๊ฐํ ์ฌ๋์ ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ์ num์ ์ ์ฅํ๋ฉด์ 1๋ฒ์ด ์ฐธ๊ฐํ๋์ง ํ์ธํ๋ค. 1๋ฒ์ด ์ฐธ๊ฐํ๋ค๋ฉด ์๋ก์ด ๋ ธ๋๋ฅผ ๋ง๋ค์ด์ผ ํ๋ฏ๋ก ์ฐธ๊ฐํ ์ฌ๋๋ค์ HashSet์ idx๋ฅผ ์ ์ฅํ๋ค. 1๋ฒ์ด ์ฐธ๊ฐํ์ง ์์๋ค๋ฉด ๊ฐ์ ์๋ ๋ ธ๋๋ฅผ ์๋ก ๊ณต์ ํด์ผ ํ๋ฏ๋ก ๊ฐ์ HashSet์ ์ํํ๋ฉฐ ๋ค๋ฅธ ์ฌ๋๋ค์ HashSet์ ๊ฐ์ ์ ์ฅํ๋ค. ์ต์ข ArrayList๋ฅผ ์ํํ๋ฉฐ ๊ฐ ์ฌ๋๋ค์ HashSet์ size๊ฐ idx์ ์ผ์นํ๋ค๋ฉด ๋ชจ๋ ๋ ธ๋๋ฅผ ์๋ ์ฌ๋์ด๋ฏ๋ก ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 3568_iSharp (0) | 2024.05.22 |
---|---|
[Baekjoon] 2942_ํผ๊ฑฐ์จ๊ณผ ์ฌ๊ณผ (0) | 2024.05.20 |
[Baekjoon] 1331_๋์ดํธ ํฌ์ด (0) | 2024.05.16 |
[Baekjoon] 1268_์์ ๋ฐ์ฅ ์ ํ๊ธฐ (0) | 2024.05.15 |
[Baekjoon] 2824_์ต๋๊ณต์ฝ์ (0) | 2024.05.14 |