본문 바로가기
BaekJoon

[백준] 15652번 : N과 M (4)(JAVA)

by GrayChoi 2019. 12. 6.
반응형

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

 

15652번: N과 M (4)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다.

www.acmicpc.net

위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 13단계

 

백트래킹의 카테고리에 포함되어 있는 문제이다.

 

이번 문제는 중복을 허용하면서 숫자의 순서가 비 내림차순인 순서여야 하는 문제이다.

 

이전의 문제들을 풀고나니 푸는데 어려움이 없던 문제이다.

 

import java.util.Scanner;

public class Question_15652 {
	static int[] Output = new int[10];
	
	static void Backtracking(int index, int N, int M) {
		if(index == M) {
			for(int i = 0; i < M; i++) {
				System.out.print(Output[i]);
				if(i != M-1)
					System.out.print(' ');
			}
			System.out.println();
			return;
		}
		
		for(int i = 1; i <= N; i++) {
			Output[index] = i;
			if(index == 0)
				Backtracking(index + 1, N, M);
			else if(index > 0 && Output[index] >= Output[index-1])
				Backtracking(index + 1, N, M);
		}
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int M = sc.nextInt();
		
		Backtracking(0, N, M);

	}
}
반응형

댓글