๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/5107)
< ๋ง๋๋ >
๋ฌธ์ ํ์ด
๊ฐ ๊ด๊ณ๋ฅผ ๋ฐฐ์ด๋ก ์ ์ฅํ ํ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ๋ฅผ ์ฐพ๋๋ค.
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.StringTokenizer;
public class _5107_ { // ๋ง๋๋
static boolean visited[];
static int[] arr;
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;
int cnt = 1;
while ((n = Integer.parseInt(bf.readLine())) != 0) {
ArrayList<String> list = new ArrayList<>();
visited = new boolean[n];
arr = new int[n];
for(int i=0; i<n; i++) {
st = new StringTokenizer(bf.readLine());
String a = st.nextToken();
String b = st.nextToken();
if (!list.contains(a)) {
list.add(a);
}
if (!list.contains(b)) {
list.add(b);
}
arr[list.indexOf(a)] = list.indexOf(b);
}
int result = 0;
for (int i = 0; i < n; i++) {
if (!visited[i]) {
visited[i] = true;
result += 1;
search(i);
}
}
bw.write(cnt++ + " " + result + "\n");
}
bw.flush();
}
private static void search(int num) {
if (!visited[arr[num]]) {
visited[arr[num]] = true;
search(arr[num]);
}
}
}
๋ณ์)
n : ์ฌ๋์ ๋ช ์
cnt : ์ผ์ด์ค ๋ฒํธ
list : ์ฌ๋ ๋ฒํธ
visited : ๋ฐฉ๋ฌธ ์ฌ๋ถ
arr : ๋ง๋๋ ๊ด๊ณ
a, b : ๋ ์ฌ๋์ ์ด๋ฆ
result : ์ฐ๊ฒฐ ๊ณ ๋ฆฌ์ ๊ฐ์
์ฌ๋์ ๋ช ์๊ฐ 0์ด ์๋ ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ์ฌ๋์ ์๋งํผ ๋ ์ฌ๋์ ์ด๋ฆ์ ์ ๋ ฅ๋ฐ์ ๋ง๋๋ ๊ด๊ณ๋ฅผ ์ ์ฅํ๋ค. ์ด๋ ์ด๋ฆ์ ์ ๋ ฅ๋ฐ์ ๊ฒ์ ํธํ๊ฒ ์ ์ฅํ๊ธฐ ์ํด ArrayList์ ๋จผ์ ์ ์ฅํด index ๋ฒํธ๋ก ๊ด๋ฆฌํ๋ค. arr๋ฐฐ์ด์ list์ index ๋ฒํธ๋ก ๋ง๋๋ ๊ด๊ณ๋ฅผ ์ ์ฅํ๋ค.
2) ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ฌ๋๋ค์ ๋ฐฉ๋ฌธํ์ฌ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ ๊ฐ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด search ํจ์๋ฅผ ํธ์ถํ๋ค.
3) ํด๋น ์ผ์ด์ค ๋ฒํธ์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
search(index)
๋ง๋๋์ ๋ง๋๋๋ฅผ ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด ๋ฐฉ๋ฌธ ํ search ํจ์๋ฅผ ํธ์ถํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1461_๋์๊ด (0) | 2024.03.05 |
---|---|
[Baekjoon] 16987_๊ณ๋์ผ๋ก ๊ณ๋์น๊ธฐ (0) | 2024.03.04 |
[Baekjoon] 16206_๋กค์ผ์ดํฌ (0) | 2024.02.29 |
[Baekjoon] 9421_์์์๊ทผ์ (1) | 2024.02.28 |
[Baekjoon] 3896_์์ ์ฌ์ด ์์ด (1) | 2024.02.27 |