ํฐ์คํ ๋ฆฌ ๋ทฐ
[๋ฌธ์ ]
[ํ์ด]
ํ์ ๊ฒฐ์ฑํ๊ธฐ ์ํด์ , ๊ฒฐ๊ตญ ๋ฃจํ๋ฅผ ๋์์ผ ํ๋ค๋ ์กฐ๊ฑด์ ๋ ์ฌ๋ฆฌ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด d -> a -> b -> c - > a ๋ฃจํ๊ฐ ๋๋ค๋ฉด, a๋ฅผ ๋ง๋ฌ์๋ ์ด์ [d,a,b,c]์ค์ a๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ ๋ฃจํ๊ฐ ๋ฉ๋๋ค. ์ฆ, a์ index๋ถํฐ ํ์ ๊ฒฐ์ฑํ ์ ์์ต๋๋ค.
- student[]์ index์์ ์ด๋ํ ์ซ์๋ฅผ ์ ์ฅ
- ๋ง์ฝ index -> index ๋ผ๋ฉด, ํผ์ ํ์ ์ด๋ฃจ๊ธฐ ๋๋ฌธ์ total++ ์ ํตํด 1๋ช ์ ํ์ ๊ฒฐ์ฑํ๊ณ , visit[index] = true๋ฅผ ํตํด ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
- findTeam(student, N)์ ํตํด student๋ฐฐ์ด์ ๋๋ฉฐ, ๋ฐฉ๋ฌธํ์ง ์์ ํ์๋ค๋ง while๋ฌธ์ ํตํด ํ ๊ฒฐ์ฑ์ ์๋ํฉ๋๋ค. ๋ง์ฝ, ์ง๋์จ ํ์๋ค์ ArrayList arr์ ํ์ฌ ๋ฐฉ๋ฌธํ ํ์์ด ์๋ค๋ฉด ๋ฃจํ๋ฅผ ๋ง๋ฌ์ผ๋ ํ์ ๊ฒฐ์ฑํ๊ณ ํ์ถํ์ฌ total์ ๊ฐฑ์ ํฉ๋๋ค.
- ๋ง์ง๋ง์ N - total์ ํตํด ํ์ ๊ฒฐ์ฑํ์ง ๋ชปํ ํ์์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
[์ฝ๋]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
public static int total = 0;
public static boolean[] visit;
public static void main(String[] args) throws IOException {
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int t=0;t<T;t++) {
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] student = new int[N+1];
visit = new boolean[N+1];
for(int i=1;i<=N;i++) {
student[i] = Integer.parseInt(st.nextToken());
if(i == student[i]) {
visit[i] = true;
total++;
}
}
findTeam(student, N);
sb.append(N-total + "\n");
total = 0;
}
System.out.println(sb.toString());
}
public static void findTeam(int[] student, int N) {
for(int i=1;i<=N;i++) {
if(visit[i]) {
continue;
}
int index = i;
ArrayList<Integer> arr = new ArrayList<>();
while(!visit[index]) {
visit[index] = true;
arr.add(index);
index = student[index];
if(visit[index] && arr.contains(index)) {
total = total + arr.size() - arr.indexOf(index);
}
}
// System.out.println(arr);
}
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ฐฑ์ค 2110๋ฒ - ๊ณต์ ๊ธฐ ์ค์น (0) | 2022.06.28 |
---|---|
[Java] ๋ฐฑ์ค 7453๋ฒ - ํฉ์ด 0์ธ ๋ค ์ ์ (0) | 2022.06.28 |
[Java] ๋ฐฑ์ค 14888๋ฒ - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2022.06.28 |
[Java] ๋ฐฑ์ค 1939๋ฒ - ์ค๋์ ํ (0) | 2022.06.13 |
[Java] ๋ฐฑ์ค 1931๋ฒ - ํ์์ค ๋ฐฐ์ (0) | 2022.06.13 |
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- ์นด์นด์ค ์ธํด
- ํ๋กํผํฐ
- map
- ๋ฐฑ์ค
- git
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฐฑ์ค javascript
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ํ๋กํ ์ฝ
- ๋ฐฑ์ค node.js
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- http
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ์๊ณ ๋ฆฌ์ฆ
- ์ด๋ถํ์
- Baekjoon
- ์ฝ๋ฉํ ์คํธ
- JavaScript
- ๋คํธ์ํฌ
- ์๋ฐ
- ๋์์ธ ํจํด
- fp
- ํฌํฌ์ธํฐ
- ์ ์ญ ๋ณ์
- ๋ ์์ปฌ ํ๊ฒฝ
- ์ด์์ฒด์
- ํ๋ก๊ทธ๋๋จธ์ค
- TDD
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
๊ธ ๋ณด๊ดํจ