코딩테스트/백준
10451번 - 순열사이클 [JAVA]
애플쩀
2023. 7. 12. 17:03
package backjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Tree1 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int T=Integer.parseInt(br.readLine()); //테스트케이스 변수
for (int k = 0; k < T; k++) {
int count=0;
int N=Integer.parseInt(br.readLine()); //배열갯수
int arr[]=new int[N+1]; //인덱스를 1부터 시작하기 위함
boolean[] visited=new boolean[N+1]; //F로 초기화됨
StringTokenizer st=new StringTokenizer(br.readLine());
for (int i= 1; i < arr.length; i++) {
arr[i]=Integer.parseInt(st.nextToken());
}//for -배열에 저장
for (int i = 1; i < arr.length; i++) {
if(!visited[i]) {
visited[i]=true;
int next=arr[i];
while(true) {
if(visited[next]) {
count++;
break;
}
visited[next]=true;
next=arr[next];
}
}//if
}//for-i
System.out.println(count);
}//for-k
}//main
}//class
https://www.acmicpc.net/problem/10451
10451번: 순열 사이클
1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3
www.acmicpc.net
- boolean 타입의 배열은 기본적으로 false로 초기화된다.
- StringTokenizer(a ,"b") -> b부분에는 구분할 구분자를 모두넣기!
- BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
- int arr[]=new int[N+1] 이렇게 쓰는 이유는 인덱스를 헷갈리지 않게 1부터 N+1까지 쓰는것을 위함