BaekJoon

15652번:N과 M (4) [Java]

충 민 2022. 8. 31. 17:34

이 전의 글과 같이 백트래킹을 이용하여 풀었다. 

[소스코드]

package algorithm15650;

import java.util.*;

public class Main {
	static int n, m;
	static int a[];
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		n = sc.nextInt();//수 입력
		m = sc.nextInt();//한줄당 개수 입력
		
		a = new int[m];
		
		go(1,0);

	}
	
	public static void go(int index,int depth) {
		//인덱스가 마지막 위치에 도달하면 수열 출력
		if(depth == m) { 
			for(int val:a) {
				System.out.print(val + " ");
			}
			System.out.println();
			return;
		}
		// 1부터 ~ N개의 수를 선택
		for(int i=index; i<=n; i++) {
			a[depth]=i;
			go(i,depth+1);
		}
	}
}

실행결과