반응형
N과M(1)은 중복 O
N과M(2)는 중복 X
둘다 DFS를 활용한 코드이다.
오히려 중복없이 출력하는 코드인 (2)가 더 짧다.
단, 매개변수를 하나 더 필요로한다.
이 값(at)은 현재 index값보다 더 큰 index에 대하여 for문을 돌리기위해 사용한다.
import java.util.Scanner;
class Main {
public static int[] arr;
public static int N, M;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
N = in.nextInt();
M = in.nextInt();
arr = new int[M];
dfs(1, 0);
}
public static void dfs(int at, int depth) {
if (depth == M) {
for (int val : arr) {
System.out.print(val + " ");
}
System.out.println();
return;
}
for (int i = at; i <= N; i++) {
arr[depth] = i;
dfs(i + 1, depth + 1);
}
}
}
예를들어서 at은 다음과 같을때 사용된다.
반응형
'코딩테스트 > Java' 카테고리의 다른 글
[JAVA] 백준 로봇청소기 (0) | 2021.04.14 |
---|---|
[JAVA]백준 치킨배달 (4) | 2021.04.12 |
(2018카카오) 파일명정렬 Java (0) | 2021.03.18 |
(2018카카오) 방금그곡 Java (0) | 2021.03.18 |
(2021카카오) 카드 짝 맞추기 Java (0) | 2021.03.11 |