๋ฐ์ํ
https://www.acmicpc.net/problem/6603
์ฝ๋
import java.util.Scanner;
public class Main {
static int[] arr;
static boolean[] visit;
static int N;
public static void dfs(int start, int depth) {
if(depth == 6) { // ํ์ถ ์กฐ๊ฑด(์ถ๋ ฅ)
for(int i=0; i<N; i++) {
if(visit[i] == true) { // ํ์๋๊ณณ => ์ถ๋ ฅ
System.out.print(arr[i] + " ");
}
}
System.out.println();
return; // ์ฌ๊ท ํจ์ ์ข
๋ฃ
}
for(int i=start; i<N; i++) {
visit[i] = true; // ๋ฐฉ๋ฌธํ ๊ณณ ์ฒดํฌ
dfs(i+1, depth+1); // ์ฌ๊ทํธ์ถ, ํ๋์ ๊น์ด๋ฅผ ํ์ ํ => ๋ค์ ํธ์ถ์ ๊น์ด+1
visit[i] = false; // ์ด๊ธฐํ
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(true) {
N = scan.nextInt();
arr = new int[N];
visit = new boolean[N];
if(N == 0)
break;
for(int i=0; i<N; i++) {
arr[i] = scan.nextInt();
}
dfs(0, 0);
System.out.println();
}
scan.close();
}
}
ํ์ด
์ฃผ์ด์ง ์ซ์์ค(6๊ฐ ~ 13๊ฐ) ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
์งํฉ S๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๊ณ , S์ ํฌํจ๋๋ ์๋ฅผ 6๊ฐ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ถ๋ ฅํ๋ค.
๊น์ด๊ฐ 6(6๊ฐ ์ ํ)์ด ๋ ๋ ๊น์ง dfs๋ฅผ ๊ณ์ ๋๋ฆฐ๋ค.
๊น์ด๊ฐ 6์ผ๋
dfs๋ฅผ ํตํด ๊น์ด๋ฅผ ํ์ํ๊ณ , ๊น์ด๊ฐ 6์ด ๋์๋(6๊ฐ ์ ํ) ๋ฐฑํธ๋ํน์ ํตํด ๊ณ ๋ฅด์ง ์์ ๋ค์ ๋ฒํธ๋ฅผ ๊ณ ๋ฅธ๋ค.
์๋์ ๊ทธ๋ฆผ์ผ๋ก ํํํ ์ ์๋ค.
input - [1, 2, 3, 4, 5, 6, 7]
์ฒ์ ๊ณ ๋ฅผ ์ ์๋ ๊ฒฝ์ฐ - {1, 2, 3, 4, 5, 6}
๋ค์์ 6์์ ๋ฐฑํธ๋ํน์ ํ 7์ ๋ฐฉ๋ฌธํ๋ฉด - {1, 2, 3, 4, 5, 7}
๊ทธ ๋ค์์ 5์์ ๋ฐฑํธ๋ํน ํ 6์ ๋ฐฉ๋ฌธํ ์ ์๋ค. - {1, 2, 3, 4, 6, 7}
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Codeforces] 1030A: In Search of an Easy Problem (0) | 2020.02.12 |
---|---|
[Codeforces] 977A: Wrong Subtraction (0) | 2020.02.11 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๋น๋ฐ์ง๋ (0) | 2020.02.09 |
[๋ฐฑ์ค] 3986๋ฒ: ์ข์ ๋จ์ด(๋ฌธ์์ด, ์คํ) (0) | 2020.02.09 |
[๋ฐฑ์ค] 2012๋ฒ: ๋ฑ์ ๋งค๊ธฐ๊ธฐ(๊ทธ๋ฆฌ๋) (0) | 2020.02.08 |
๋๊ธ