250417 N과 M (9)

Jongleee·2025년 4월 17일

TIL

목록 보기
871/970
public static void main(String[] args) throws IOException {
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	StringTokenizer st = new StringTokenizer(br.readLine());

	int n = Integer.parseInt(st.nextToken());
	int m = Integer.parseInt(st.nextToken());

	int[] input = new int[n];
	st = new StringTokenizer(br.readLine());
	for (int i = 0; i < n; i++) {
		input[i] = Integer.parseInt(st.nextToken());
	}

	Arrays.sort(input);

	boolean[] visited = new boolean[n];
	int[] sequence = new int[m];
	StringBuilder result = new StringBuilder();

	generatePermutations(input, visited, sequence, result, n, m, 0);
	System.out.print(result);
}

private static void generatePermutations(int[] input, boolean[] visited, int[] sequence, StringBuilder result,
		int n, int m, int depth) {
	if (depth == m) {
		for (int value : sequence) {
			result.append(value).append(' ');
		}
		result.append('\n');
		return;
	}

	int prev = 0;
	for (int i = 0; i < n; i++) {
		if (visited[i] || input[i] == prev) {
			continue;
		}
		visited[i] = true;
		sequence[depth] = input[i];
		prev = input[i];
		generatePermutations(input, visited, sequence, result, n, m, depth + 1);
		visited[i] = false;
	}
}

출처:https://www.acmicpc.net/problem/15663

0개의 댓글