๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 15651๋ฒˆ: N๊ณผ M (3) (dfs, ์ค‘๋ณตํฌํ•จ)

by ์ฃผ๋ฐœ2 2020. 2. 19.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/15651

 

15651๋ฒˆ: N๊ณผ M (3)

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

www.acmicpc.net

์ฝ”๋“œ

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

public class Main {
	public static int arr[];
	public static int N;
	public static int M;
	public static StringBuilder sb = new StringBuilder();
	
	public static void dfs(int count) {
		if(count == M) {
			for(int i : arr)
				sb.append(i + " ");
			sb.append("\n");
			return;
		}
		
		for(int i=1; i<=N; i++) {
			arr[count] = i;
			dfs(count + 1);
		}
	}

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		String str = bf.readLine();
		StringTokenizer st = new StringTokenizer(str);
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		arr = new int[M];
		dfs(0);
		
		System.out.println(sb);
		bf.close();
	}

}

ํ’€์ด

N๊ณผ M ์‹œ๋ฆฌ์ฆˆ 3๋ฒˆ์งธ๋ฌธ์ œ. 

์ˆ˜๋ฅผ ๋ฝ‘๋˜ ๊ฐ™์€ ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ณจ๋ผ๋„ ๋œ๋‹ค. - ์ค‘๋ณต ํ—ˆ์šฉํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

๋”ฐ๋ผ์„œ ์ด์ „์˜ ๋ฌธ์ œ๋Š” 1์„ ํƒ์ƒ‰ํ•˜๊ณ , ๋ฐฉ๋ฌธํ–ˆ์„๊ฒฝ์šฐ 2๋ฅผํƒ์ƒ‰ํ•˜๋Š” ์‹์œผ๋กœ dfs๋ฅผ ๋Œ๋ ธ์œผ๋‚˜,

์ด ๋ฌธ์ œ๋Š” 1์„ ํƒ์ƒ‰ํ•˜๊ณ  ๋‹ค์‹œ 1์„ ํƒ์ƒ‰ํ•œ๋‹ค.(count๊ฐ€ ์ฃผ์–ด์ง„ M๊ณผ ๊ฐ™์„๋•Œ๊นŒ์ง€) - ์™„์ „ํƒ์ƒ‰.

 

* ์ด ๋ฌธ์ œ์—์„œ Scanner์™€ ๊ธฐ๋ณธ์ ์ธ ์ถœ๋ ฅ์„ ํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ,

StringBuilder + BufferedReader ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•ด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค.

 

N๊ณผ M(1)

N๊ณผ M(2)

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€