백준 15650번 자바
2021. 4. 5. 00:48ㆍ카테고리 없음
백준 15650(n과m 순열 문제)
링크 문제
풀이
얼마전에 순열의 기본 개념을 공부했던 터라 순열문제를 골라서 풀었다. n과m 문제는 1,2번으로 구성되어있는데 첫 번째 문제는 순열, 두 번째 문제는 조합으로 풀면되는 문제였다. 순열의 개념은 개념정리편에서 정리를 했기 때문에 코드에서 간단한 주석으로 설명하겠다.
코드
private static void dfs(int N, int M, int depth) {//n과m 1번 문제 if (depth == M) { for (int num : arr) { sb.append(num).append(" "); } sb.append("\n"); return;//여기서 이 호출된 함수를 끝내야 depth의 outofInedex에러가 안난다. } for (int i=1; i<=N; i++) {//visited 의 index가 0,1,2,3 이렇게 시작되는데 1,2,3,4로 보면 편함 if (!visited[i]) { visited[i] = true; arr[depth] = i; dfs(N,M,depth + 1); visited[i] = false; } } } private static void dfs2(int depth,int currentLocation) { //n과m 2번 문제 if (depth == M) { for (int num : arr) { sb.append(num).append(" "); } sb.append("\n"); return;//여기서 이 호출된 함수를 끝내야 depth의 outofInedex에러가 안난다. } for (int i=currentLocation; i<=N; i++) { arr[depth] = i; dfs2(depth + 1,i+1); } }