728x90

문제

 

 

접근 방식

11번 문제에 조건 하나만 더 추가된 문제로

다음 인덱스를 뽑을 때마다 이전 인덱스 이전의 값을 제외한

동일한 인덱스 부터의 값만 뽑을 수 있다.

 

재귀 호출 시 두 번째 인자로 넘겨주던 시작 인덱스 값을

현재 호출 스택에서 사용 중인 시작 인덱스를 넘겨주면 된다.

 

풀이

public class Main {

	private static StringBuilder sb = new StringBuilder();
	private static int n;
	private static int m;
	private static int[] arr;
	private static int[] sequence;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");

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

		arr = new int[n];
		sequence = new int[m];

		st = new StringTokenizer(br.readLine(), " ");

		for (int i = 0; i < n; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}

		Arrays.sort(arr);

		createSequence(0, 0);

		System.out.println(sb);
	}

	private static void createSequence(int size, int start) {
		if (size == m) {
			for (int seq : sequence) {
				sb.append(seq).append(" ");
			}
			sb.append("\n");
			return;
		}

		int before = 0;

		for (int i = start; i < n; i++) {
			if (before != arr[i]) {
				sequence[size] = arr[i];
				before = arr[i];
				createSequence(size + 1, i);
			}
		}
	}
}

 

'Java > Algorithms' 카테고리의 다른 글

[백준] 1182번 : 부분수열의 합  (0) 2023.11.01
[백준] 9663번 : N-Queen  (1) 2023.11.01
[백준] 15665번 : N과 M (11)  (0) 2023.10.30
[백준] 15664번 : N과 M (10)  (0) 2023.10.30
[백준] 15663번 : N과 M (9)  (0) 2023.10.30

+ Recent posts