[Algorithm] 순열 (JAVA)

하동혁 ·2023년 3월 30일
0

Algorithm

목록 보기
4/5
post-thumbnail

[순열]

순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미합니다.

순열은 순서를 고려합니다. ( [1,2,3] != [2,3,1] )

순열 코드

import java.io.*;
import java.util.*;
public class test {

	static int N, R; // N개 중에 R개를 선택 
	
	static int[] permuArr; // R개의 순열을 담는 배열 
	static int[] visited; 
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		N = Integer.parseInt(br.readLine());
		R = Integer.parseInt(br.readLine());
			
		permuArr = new int[R];
		visited = new int[N+1];
		permutation(0); 
		
	}
	
	static void permutation(int deep) { 
		
		if(deep == R) {
			System.out.println(Arrays.toString(permuArr));
			return; 
		}
		
		for(int i=1; i<=N; i++) {
				if(visited[i] == 0) {
					permuArr[deep] = i;
					visited[i] = 1; 
					permutation(deep+1);
					permuArr[deep] = 0;
					visited[i] = 0; 	
				}
		}
		
	}

}

[입력-출력 예시]

3
2
[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 1]
[3, 2]

0개의 댓글