반응형
https://www.acmicpc.net/problem/15649
사고방식
dp를 활용하는 문제이다.
알고리즘 문제들을 풀다보니 dfs로 생각하면 되지 않을까? 하는 생각이 들었고 코드를 짜보았다.
Scanner 사용하여 입력값 두 값을 N, M으로 받아주고,
visitm arr 배열을 선언한 뒤
이제 depth를 1씩 증가시키며, visit 배열을 통해 방문한 곳은 다시 방문하지 않도록 dfs를 돌려주면 된다.
결론
import java.util.Scanner;
public class Main {
public static boolean [] visit;
public static int arr [];
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
visit = new boolean [N];
arr = new int [M];
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]==false){
visit[i] = true;
arr[depth] = i+1;
dfs(N, M, depth+1);
visit[i] = false;
}
}
}
}
반응형
'개발공부 > 알고리즘' 카테고리의 다른 글
백준 11726번 - 2×n 타일링 [DP/자바 JAVA] (0) | 2024.09.09 |
---|---|
백준 1463번 - 1로 만들기 [DP/자바 JAVA] (1) | 2024.09.08 |
백준 9095번 - 1, 2, 3 더하기 [브루트 포스/자바 JAVA] (0) | 2024.09.05 |
백준 1748번 - 수 이어 쓰기 1 [브루트 포스/자바 JAVA] (0) | 2024.09.04 |
백준 1476번 - 날짜 계산 [브루트 포스/자바 JAVA] (2) | 2024.09.01 |