[인프런/DFS/9.조합구하기] - 정 리 중 -
by 개발하는지호<<풀이>>
일단 내가 생각한 논리대로 진행을 했는데 어디선가 막힌 것 같다 ㅋㅋ ㅠ
아마 중간에 놓쳤거나 실수한 부분이 있을 것이라고 본다.
어떤 논리로 움직이는지 파악은 되지만 여전히 헷갈리는 DFS ㅜㅡㅜ
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
class Main {
static int[] ch;
static ArrayList<Integer> list = new ArrayList<>();
private void DFS(int L, int i, int n, int m) {
if (L == m) {
for (int x : list) {
System.out.print(x + " ");
}
list.clear();
return;
}
if (ch[i] == 1) return;
else {
ch[i] = 1;
list.add(i);
for (int j = 1; j <= n ; j++) {
DFS(L+1, j, n, m);
ch[i] = 0;
}
}
}
public static void main(String[] args) throws Exception{
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] arr = br.readLine().toCharArray();
int n = Integer.parseInt(String.valueOf(arr[0]));
int m = Integer.parseInt(String.valueOf(arr[2]));
ch = new int[n+1];
for (int i = 1; i <= n; i++) {
T.DFS(0, i, n, m);
}
}
}
-강사님 풀이-
와 .. 정말 신기하게 풀었다.'
강사님 왈 " 이 풀이는 그냥 외우는게 좋다!! "
일단 어떤 원리인지는 깨달았다. 조금 있다가 최종 마무리 하겠다.
import java.util.*;
class Main{
static int[] combi;
static int n, m;
public void DFS(int L, int s){
if(L==m){
for(int x : combi) System.out.print(x+" ");
System.out.println();
}
else{
for(int i=s; i<=n; i++){
combi[L]=i;
DFS(L+1, i+1);
}
}
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
n=kb.nextInt();
m=kb.nextInt();
combi=new int[m];
T.DFS(0, 1);
}
}
'코딩테스트' 카테고리의 다른 글
[백준/1015/수열 정렬] (1) | 2024.04.06 |
---|---|
[인프런/DFS/10.미로탐색] (5) | 2024.04.01 |
[백준/1271/엄청난 부자2] (0) | 2024.03.26 |
[백준/1076/저항] (0) | 2024.03.26 |
[백준/1012/유기농 배추] (1) | 2024.03.25 |
블로그의 정보
DevSecOps
개발하는지호