https://www.acmicpc.net/problem/15649
Java의 기본적인 입출력
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println();
오늘은 여기까지만 외우자.
코드는 백트래킹을 기초로 dfs를 사용해서 구현하였다.
import java.util.Scanner;
public class Main {
public static int[] arr;
public static boolean[] visit;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
arr = new int[m];
visit = new boolean[n];
dfs(n, m, 0);
}
public static void dfs(int n, int m, int depth) {
if(depth == m) {
for (int val : arr) {
System.out.print(val + " ");
}
System.out.println();
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;
}
}
}
}
이렇게 설명해야하는 내 자신이 너무 한심하다. n, m 에 4, 2를 넣었을때 동작하는 방식이다.
다음 문제를 풀며 좀더 감을 잡도록 하자.
'코딩테스트 > JAVA' 카테고리의 다른 글
[백준 JAVA] 15652번: N과 M (4) - 중복 조합 (0) | 2024.07.17 |
---|---|
[백준 JAVA] 15651번: N과 M (3) - 중복 순열 (0) | 2024.07.17 |
[백준 JAVA] 15650번: N과 M (2) - 중복 없는 조합 (0) | 2024.07.16 |
[프로그래머스 JAVA] 완주하지 못한 선수 (0) | 2024.07.15 |
[프로그래머스 JAVA] 폰켓몬 (0) | 2024.07.15 |