1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [S2_15663] N๊ณผ M (9)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;

public class BOJ_S2_15663 {
	static int N, M;
	static int[] arr;
	static int[] ans;
	static boolean[] check;
	static StringBuilder sb = new StringBuilder();

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

		// **** input start ****

		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());

		arr = new int[N];
		ans = new int[M];
		check = new boolean[N];

		st = new StringTokenizer(br.readLine(), " ");
		for (int i = 0; i < N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}

		// **** input end ****

		// ์ •๋ ฌ
		Arrays.sort(arr);

		comb(0);

		System.out.println(sb);

	} // main end

	static void comb(int cnt) {
		// ๊ธฐ์ €์กฐ๊ฑด
		if (cnt == M) {
			for (int i = 0; i < ans.length; i++) {
				sb.append(ans[i]).append(" ");
			}
			sb.append("\n");
			return;
		} else {
			// ์ด์ „ ๊ฐ’ ์ €์žฅ
			int before = 0;
			for (int i = 0; i < N; i++) {
				// ์ด๋ฏธ ๋ฝ‘์€ ๊ฒƒ์ด๋ฉด
				if (check[i])
					continue;
				// ์ด์ „ ๊ฐ’๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด
				else if (before != arr[i]) {
					// ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ
					check[i] = true;
					// ์ •๋‹ต ๋ฐฐ์—ด์— ๊ฐ’ ๋„ฃ์–ด์ฃผ๊ธฐ
					ans[cnt] = arr[i];
					// ์ „์˜ ๊ฐ’ ๊ฐฑ์‹  -> ๋“ค์–ด์™”๋˜ ๊ฐ’์ด ์ „์˜ ๊ฐ’์œผ๋กœ ๋œ๋‹ค
					before = arr[i];
					comb(cnt + 1);
					// ๋ฐฑํŠธ๋ž˜ํ‚น
					check[i] = false;
				}
			}
		}
	}
} // class end

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

์ด ๋ฌธ์ œ๋Š” combination์˜ ์—ฐ์† ๋ฌธ์ œ๋“ค ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
์ด ๋ฌธ์ œ์—์„œ์˜ ์กฐ๊ฑด์€ ์กฐํ•ฉ์—์„œ ์ „์— ๊ฐ’์ด ๋‚˜์˜จ๋‹ค๋ฉด ์ถœ๋ ฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ž˜์„œ comb ๋ฉ”์„œ๋“œ์—์„œ ์ด์ „ ๊ฐ’์„ ์ €์žฅํ•ด์„œ ๋งŒ์•ฝ ์ด๋ฏธ ๋ฝ‘์€ ๊ฒƒ์ด๋ฉด ํ†ต๊ณผํ•˜๊ณ  ์ด์ „ ๊ฐ’๊ณผ ๋‹ค๋ฅด๋‹ค๋ฉด ์ •๋‹ต ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ  ๊ฐ’์ด M ๋งŒํผ ๋‹ค ๋Œ์•˜์œผ๋ฉด ์ •๋‹ต ๋ฐฐ์—ด ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
์ •๋‹ต ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ค„ ํ•„์š”๋Š” ์—†๋Š”๊ฒŒ ๊ณ„์† ๊ฐ’์„ ๋ฎ์–ด์“ฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: