[백준, JAVA] 15650번 : N과 M(2)

seunguk noh·2023년 7월 26일
0

Algorithm

목록 보기
1/23

1. 문제

https://www.acmicpc.net/problem/15650

2. 아이디어

DFS 탐색 기법을 활용한 백트래킹 문제이다.
오름차순으로 출력하는 조건에 의해 depth 변수 뿐만 아니라 at 변수도 필요하다.

3. 코드

import java.util.Scanner;
 
public class BOJ_1_15650 {
 
	public static int[] arr;
	public static int N, M;
 
	public static void main(String[] args) {
 
		Scanner sc = new Scanner(System.in);
 
		N = sc.nextInt();
		M = sc.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);
 
		}
	}
}

4. 느낀점

dfs 개념이나 활용에 대해 아직 미숙한 것 같다.

N과 M (1)을 먼저 풀고나니 상대적으로 쉽게 풀었다.

0개의 댓글