๋ฐฑ์ค 15651๋ฒ, N๊ณผ M (3) (with.Java)
๋ฐฑ์ค 15651๋ฒ, N๊ณผ M (3) (with.Java) ์ ๋ํ์ฌ ์์๋ณธ ๊ธ์ ๋๋ค.
์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ๋ฅผ ํ๋ฉฐ, ํ์๋ ๋ฌธ์ ์ ๋ํ ํ๊ณ ์ ๋ค๋ฅธ ํ์ด ๋ฐฉ๋ฒ์ ์์๋ณด๋ฉฐ, ์์๊ฐ๊ณ ์ ํฉ๋๋ค.
๋ฌธ์ ์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์
์์ฐ์ N๊ณผ M์ด ์ฃผ์ด์ก์ ๋, ์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ธธ์ด๊ฐ M์ธ ์์ด์ ๋ชจ๋ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- 1๋ถํฐ N๊น์ง ์์ฐ์ ์ค์์ M๊ฐ๋ฅผ ๊ณ ๋ฅธ ์์ด.
- ๊ฐ์ ์๋ฅผ ์ฌ๋ฌ ๋ฒ ๊ณจ๋ผ๋ ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ ์ n์ด ์ฃผ์ด์ง๋ค.
n์ ์์์ด๋ฉฐ 11๋ณด๋ค ์๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค, n์ 1, 2, 3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
import java.io.*;
import java.util.StringTokenizer;
class Main{
public static int N, M;
public static int[] arr;
public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
br.close();
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[M];
dfs(0);
bw.flush();
bw.close();
}
public static void dfs(int depth) throws Exception{
if(depth == M){
for (int i = 0; i < M; i++){
bw.write(arr[i] + " ");
}
bw.write("\n");
return;
}
for(int i = 1; i <= N; i++){
arr[depth] = i;
dfs(depth + 1);
}
}
}
ํ์ด ์ค๋ช
์ด ์ฝ๋๋ ๋ฐฑํธ๋ํน์ ํ์ฉํ์ฌ 1๋ถํฐ N๊น์ง์ ์ซ์๋ก ๊ตฌ์ฑ๋ M๊ฐ์ ์์ด์ ์์ฑํ๊ณ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค.
๋จผ์ , BufferedReader
๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ ฅ์ ๋ฐ๊ณ , StringTokenizer
๋ฅผ ํ์ฉํ์ฌ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ ๊ฐ์ ์ ์ N๊ณผ M์ ํ์ฑํฉ๋๋ค.
N์ ์ ํํ ์ ์๋ ์ซ์์ ๋ฒ์๋ฅผ ๋ํ๋ด๋ฉฐ, M์ ์ถ๋ ฅํ ์์ด์ ๊ธธ์ด๋ฅผ ์๋ฏธํฉ๋๋ค.
์
๋ ฅ์ ์ฒ๋ฆฌํ ํ BufferedReader
๋ฅผ ๋ซ์ต๋๋ค.
๋ฐฐ์ด arr
์ ํฌ๊ธฐ๊ฐ M์ธ ์ ์ ๋ฐฐ์ด๋ก, ํ์ฌ ๊ตฌ์ฑ ์ค์ธ ์์ด์ ์ ์ฅํ๋ ์ญํ ์ ํฉ๋๋ค.
์ดํ dfs(0)
์ ํธ์ถํ์ฌ ๊น์ด ์ฐ์ ํ์(DFS)์ ์์ํฉ๋๋ค.
dfs
๋ฉ์๋๋ ๋ฐฑํธ๋ํน์ ์ํํ๋ ์ฌ๊ท ํจ์์
๋๋ค. ์ด ํจ์๋ ํ์ฌ depth
๊ฐ์ ์ธ์๋ก ๋ฐ์ผ๋ฉฐ, depth
๊ฐ M๊ณผ ๊ฐ์์ง๋ฉด arr
์ ์ ์ฅ๋ ๊ฐ์ BufferedWriter
๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅํฉ๋๋ค.
์ด๋, ๊ฐ ์ซ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋๋ฉฐ, ์์ด์ด ์์ฑ๋ ๋๋ง๋ค ๊ฐํ ๋ฌธ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ฐ๋ณต๋ฌธ์ ํตํด 1๋ถํฐ N๊น์ง์ ์ซ์๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ํํ๋ฉฐ arr[depth]
์ ์ ์ฅํ ๋ค, dfs(depth + 1)
์ ํธ์ถํ์ฌ ๋ค์ ๊น์ด๋ก ์ด๋ํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ค๋ณต์ ํ์ฉํ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๊ฒ ๋ฉ๋๋ค.
๋ชจ๋ DFS ํธ์ถ์ด ์ข
๋ฃ๋ ํ BufferedWriter
์ ๋ฒํผ๋ฅผ ๋น์ฐ๊ณ ๋ซ์ ์ถ๋ ฅ ์์
์ ๋ง๋ฌด๋ฆฌํฉ๋๋ค.
์ด๋ฅผ ํตํด ์ค๋ณต๋ ์ซ์๋ฅผ ํ์ฉํ๋ ๊ธธ์ด M์ ๋ชจ๋ ์์ด์ ํจ์จ์ ์ผ๋ก ์์ฑํ๊ณ ์ถ๋ ฅํ ์ ์์ต๋๋ค.