[알고리즘] 재귀를 통한 순열

2024. 1. 30. 11:18알고리즘 풀이/Java

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int targetDepth = Integer.parseInt(br.readLine());
		int[] numbers = new int[targetDepth];
		boolean[] isSelected = new boolean[targetDepth];
		perm(0, targetDepth, numbers, isSelected);
	}	

	
	private static void perm(int cnt, int targetDepth, int[] numbers, boolean[] isSelected) {
		if (cnt == targetDepth) {
			System.out.println("순열 생성 완료");
			System.out.println(Arrays.toString(numbers));
		}
		
		for (int i = 0; i < targetDepth; i++) {
			if (isSelected[i] == true) {
				continue;
			}
			numbers[cnt] = i;
			isSelected[i] = true;
			perm(cnt + 1, targetDepth, numbers, isSelected);
			isSelected[i] = false;
		}
		
	}
}

순열은 for문으로 구현할 수 있는데 재귀로 구현하면 nPr에서 r의 값을 인자로 만들 수 있다.

for문으로 하게 되면 r의 값이 반복문의 수가 되어야 한다.

'알고리즘 풀이 > Java' 카테고리의 다른 글

[알고리즘][X] LCS 2  (0) 2024.01.31
[알고리즘][X] 스위치 켜고 끄기  (0) 2024.01.30
[알고리즘] Flatten  (1) 2024.01.30
[알고리즘] 하노이탑 알고리즘  (0) 2024.01.30
[알고리즘] 게리맨더링 2  (0) 2024.01.28