https://www.acmicpc.net/problem/2668
๋ฌธ์
์ธ๋ก ๋ ์ค, ๊ฐ๋ก๋ก N๊ฐ์ ์นธ์ผ๋ก ์ด๋ฃจ์ด์ง ํ๊ฐ ์๋ค. ์ฒซ์งธ ์ค์ ๊ฐ ์นธ์๋ ์ ์ 1, 2, …, N์ด ์ฐจ๋ก๋๋ก ๋ค์ด ์๊ณ ๋์งธ ์ค์ ๊ฐ ์นธ์๋ 1์ด์ N์ดํ์ธ ์ ์๊ฐ ๋ค์ด ์๋ค. ์ฒซ์งธ ์ค์์ ์ซ์๋ฅผ ์ ์ ํ ๋ฝ์ผ๋ฉด, ๊ทธ ๋ฝํ ์ ์๋ค์ด ์ด๋ฃจ๋ ์งํฉ๊ณผ, ๋ฝํ ์ ์๋ค์ ๋ฐ๋ก ๋ฐ์ ๋์งธ ์ค์ ๋ค์ด์๋ ์ ์๋ค์ด ์ด๋ฃจ๋ ์งํฉ์ด ์ผ์นํ๋ค. ์ด๋ฌํ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋๋ก ์ ์๋ค์ ๋ฝ๋, ์ต๋๋ก ๋ง์ด ๋ฝ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, N=7์ธ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ํ๊ฐ ์ฃผ์ด์ก๋ค๊ณ ํ์.
์ด ๊ฒฝ์ฐ์๋ ์ฒซ์งธ ์ค์์ 1, 3, 5๋ฅผ ๋ฝ๋ ๊ฒ์ด ๋ต์ด๋ค. ์ฒซ์งธ ์ค์ 1, 3, 5๋ฐ์๋ ๊ฐ๊ฐ 3, 1, 5๊ฐ ์์ผ๋ฉฐ ๋ ์งํฉ์ ์ผ์นํ๋ค. ์ด๋ ์งํฉ์ ํฌ๊ธฐ๋ 3์ด๋ค. ๋ง์ฝ ์ฒซ์งธ ์ค์์ 1๊ณผ 3์ ๋ฝ์ผ๋ฉด, ์ด๋ค ๋ฐ๋ก ๋ฐ์๋ ์ ์ 3๊ณผ 1์ด ์์ผ๋ฏ๋ก ๋ ์งํฉ์ด ์ผ์นํ๋ค. ๊ทธ๋ฌ๋, ์ด ๊ฒฝ์ฐ์ ๋ฝํ ์ ์์ ๊ฐ์๋ ์ต๋๊ฐ ์๋๋ฏ๋ก ๋ต์ด ๋ ์ ์๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ N(1≤N≤100)์ ๋ํ๋ด๋ ์ ์ ํ๋๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ๋ ํ์ ๋์งธ ์ค์ ๋ค์ด๊ฐ๋ ์ ์๋ค์ด ์์๋๋ก ํ ์ค์ ํ๋์ฉ ์ ๋ ฅ๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฝํ ์ ์๋ค์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ทธ ๋ค์ ์ค๋ถํฐ๋ ๋ฝํ ์ ์๋ค์ ์์ ์๋ถํฐ ํฐ ์์ ์์๋ก ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main_BOJ_2668_์ซ์๊ณ ๋ฅด๊ธฐ {
static int N;
static int[] nums;
static boolean[] isVisited;
static List<Integer> ans;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
nums = new int[N+1];
isVisited = new boolean[N+1];
ans = new ArrayList<>();
for(int i = 1; i < N+1 ; i++){
nums[i] = Integer.parseInt(br.readLine());
}
for(int i = 1; i < N+1 ; i++){
isVisited[i] = true;
DFS(i, i);
isVisited[i] = false;
}
Collections.sort(ans);
System.out.println(ans.size());
for(int a : ans)
System.out.println(a);
}
private static void DFS(int n, int cycleEnd) {
if(nums[n] == cycleEnd) ans.add(n);
if(!isVisited[nums[n]]){
isVisited[nums[n]] = true;
DFS(nums[n], cycleEnd);
isVisited[nums[n]] = false;
}
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 2636 ] ์น์ฆ ( ์๋ฐ / JAVA ) (0) | 2021.11.16 |
---|---|
[ ๋ฐฑ์ค / BOJ 16951 ] ๋ธ๋ก ๋์ด ( ์๋ฐ / JAVA ) (0) | 2021.11.11 |
[ ๋ฐฑ์ค / BOJ 17175 ] ํผ๋ณด๋์น๋ ์ง๊ฒจ์ก~ ( ์๋ฐ / JAVA ) (0) | 2021.11.11 |
[ ๋ฐฑ์ค / BOJ 17276 ] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ ( ์๋ฐ / JAVA ) (0) | 2021.11.11 |
[ ๋ฐฑ์ค / BOJ 2671 ] ์ ์ํจ ์๋ณ ( ์๋ฐ / JAVA ) (0) | 2021.11.10 |