1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [S2_15666] N๊ณผ M (12)

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

public class Main {
	static int N, M;
	static int[] arr;
	static int[] res;
	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];
		res = new int[M];

		st = new StringTokenizer(br.readLine(), " ");
		for (int i = 0; i < N; i++) {

			arr[i] = Integer.parseInt(st.nextToken());
		}
		// **** input end ****

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

		dfs(0, 0);

		// ์ถœ๋ ฅ
		System.out.println(sb);
	}

	// comb
	static void dfs(int start, int idx) {
		// ๊ธฐ์ €์กฐ๊ฑด
		if (idx == M) {
			// ๊ฒฐ๊ณผ๊ฐ’๋“ค ์ถœ๋ ฅ
			for (int i = 0; i < M; i++) {
				sb.append(res[i]).append(" ");
			}
			sb.append("\n");
			return;
		}

		// ์ด์ „ ๊ฐ’ ํ™•์ธ ์šฉ๋„
		int num = 0;
		for (int i = start; i < N; i++) {
			// ๊ทธ์ „ ๊ฐ’์ด๋ž‘ ๊ฐ™๋‹ค๋ฉด
			if (arr[i] == num)
				continue;

			// ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ๋„ฃ๊ธฐ
			res[idx] = arr[i];
			dfs(i, idx + 1);
			num = arr[i];
		}

	}
}

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

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

  • N๊ณผ M ์ž…๋ ฅ ๋ฐ›๊ธฐ, ๋ฐฐ์—ด์— ๊ฐ’๋“ค ์ž…๋ ฅ
  • dfs ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
    • ๋งค๊ฐœ๋ณ€์ˆ˜ start๋Š” ๊ฐ’์ด ์ „์ฒด ๊ฐ’๋“ค์„ ๋Œ๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์‹œ์ž‘๊ฐ’์„ ์˜๋ฏธ
    • ๋งค๊ฐœ๋ณ€์ˆ˜ idx๋Š” ๋ช‡ ๊ฐœ์˜ ๊ฐ’์„ ์ถ”์ถœํ–ˆ๋Š”์ง€ ํ™•์ธ
  • num์ด๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์ด์ „ ๊ฐ’์ด ์–ด๋–ค ๊ฐ’์ธ์ง€ ํ™•์ธํ•ด ์ค€๋‹ค.
  • ๋งŒ์•ฝ ์ด์ „ ๊ฐ’์ด๋ž‘ ํ˜„์žฌ ๊ฐ’์ด๋ž‘ ๊ฐ™๋‹ค๋ฉด ํ†ต๊ณผ
  • ๋‹ค๋ฅด๋‹ค๋ฉด ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ dfs ๋ฉ”์„œ๋“œ๋ฅผ idx๋ฅผ ํ•˜๋‚˜ ์ฆ๊ฐ€์‹œํ‚จ ์ƒํƒœ๋กœ ์‹คํ–‰ํ•œ๋‹ค.
  • ๋งŒ์•ฝ idx ๊ฐ€ M์ด ๋œ๋‹ค๋ฉด ( ๊ณผ์ •์ด ๋๋‚œ๋‹ค๋ฉด ) ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•ด์ค€๋‹ค.
  • ๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ†ตํ•ด num์˜ ๊ฐ’์„ ์ด์ „ ๊ฐ’์œผ๋กœ ๊ฐฑ์‹ ์‹œ์ผœ์ค€๋‹ค.

ํƒœ๊ทธ: , , ,

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

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