๋ฐฑ์ค 15649๋ฒ, N๊ณผ M (1) (with.Java)
๋ฐฑ์ค 15649๋ฒ, N๊ณผ M (1) (with.Java) ์ ๋ํ์ฌ ์์๋ณธ ๊ธ์ ๋๋ค.
์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ๋ฅผ ํ๋ฉฐ, ํ์๋ ๋ฌธ์ ์ ๋ํ ํ๊ณ ์ ๋ค๋ฅธ ํ์ด ๋ฐฉ๋ฒ์ ์์๋ณด๋ฉฐ, ์์๊ฐ๊ณ ์ ํฉ๋๋ค.
๋ฌธ์ ์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์
์์ฐ์ N๊ณผ M์ด ์ฃผ์ด์ก์ ๋, ์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ธธ์ด๊ฐ M์ธ ์์ด์ ๋ชจ๋ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
1๋ถํฐ N๊น์ง ์์ฐ์ ์ค์์ ์ค๋ณต ์์ด M๊ฐ๋ฅผ ๊ณ ๋ฅธ ์์ด
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ N๊ณผ M์ด ์ฃผ์ด์ง๋ค. (1 โค M โค N โค 8)
์ถ๋ ฅ
ํ ์ค์ ํ๋์ฉ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ด์ ์ถ๋ ฅํ๋ค.
์ค๋ณต๋๋ ์์ด์ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅํ๋ฉด ์๋๋ฉฐ, ๊ฐ ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํด์ผ ํ๋ค.
์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
class Main{
public static int[] arr;
public static boolean[] visit;
public static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] s_arr = br.readLine().split(" ");
br.close();
int N = Integer.valueOf(s_arr[0]);
int M = Integer.valueOf(s_arr[1]);
arr = new int[M];
visit = new boolean[N];
dfs(N, M, 0);
bw.write(sb.toString());
bw.flush();
bw.close();
}
public static void dfs(int N, int M, int depth){
if(depth == M){
for(int i : arr){
sb.append(i).append(" ");
}
sb.append("\n");
return;
}
for(int i = 0; i < N; i++){
if(!visit[i]){
visit[i] = true;
arr[depth] = i + 1;
dfs(N, M, depth + 1);
visit[i] = false;
}
}
}
}
ํ์ด ์ค๋ช
BufferedReader์ BufferedWriter๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ฒ๋ฆฌํฉ๋๋ค.
๋จผ์ , ์ ๋ ฅ๋ ๊ฐ์ ์ฝ์ด N๊ณผ M์ ์ ์ฅํฉ๋๋ค.
arr ๋ฐฐ์ด์ ์ ํ๋ ์๋ฅผ ์ ์ฅํ๊ณ , visit ๋ฐฐ์ด์ ํด๋น ์๋ฅผ ์ฌ์ฉํ๋์ง๋ฅผ ์ฒดํฌํฉ๋๋ค.
StringBuilder๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํฉ๋๋ค.
dfs ํจ์๋ ๊น์ด ์ฐ์ ํ์์ ํตํด ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํฉ๋๋ค.
ํ์ฌ ๊น์ด๊ฐ M๊ณผ ๊ฐ์ผ๋ฉด ์ ํ๋ ์๋ฅผ ์ถ๋ ฅ ํ์์ ๋ง์ถฐ StringBuilder์ ์ ์ฅํ๊ณ ๋ฐํํฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด 1๋ถํฐ N๊น์ง์ ์๋ฅผ ์ํํ๋ฉฐ ์์ง ์ฌ์ฉํ์ง ์์ ์๋ฅผ ์ ํํด ๋ค์ ๊น์ด๋ก ๋์ด๊ฐ๋๋ค.
์ ํ์ด ๋๋๋ฉด ํด๋น ์๋ฅผ ๋ค์ ๋ฏธ์ฌ์ฉ ์ํ๋ก ๋๋๋ฆฝ๋๋ค.
์ด ๊ณผ์ ์ด ๋๋๋ฉด StringBuilder์ ์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ BufferedWriter๋ฅผ ์ฌ์ฉํด ์ถ๋ ฅํ๊ณ , ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํฉ๋๋ค.
์ด ๋ฐฉ๋ฒ์ ํตํด ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์์ฑํ๊ณ ์ถ๋ ฅํฉ๋๋ค.