15650 N과 M(2)

문제 풀이

N과 M(1) 문제에서 오름차순이라는 조건이 추가되었다.

N과 M(3)과 N과 M(4) 문제에서 활용했던 방식을 사용하여 이전에 ArrayList에 들어갔던 data를 Parameter로 다음 재귀 함수에 넣어주는 방식을 활용하였다.


코드

import java.util.*;

public class Main {
	
	static StringBuilder sb = new StringBuilder();
	static int N;
	static void rec_fun(int length, ArrayList<Integer> tmp, int before) {
		// before : 이전 재귀함수에서 ArrayList에 넣었던 data 값

		if(length==0) {
			String answer = tmp.toString();
			sb.append(answer.substring(1,answer.length()-1)
            .replaceAll(",","")+"\n");
            
			return;
		}
		
		for(int i = before;i<=N;i++) {
			if(!tmp.contains(i)) {
				tmp.add(i);
				rec_fun(length-1, tmp, i);
				tmp.remove(tmp.size()-1);
			}
		}
	}
	
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		N = sc.nextInt();
		int M = sc.nextInt();
		
		rec_fun(M, new ArrayList<Integer>(), 1);
	
		System.out.println(sb.toString());
	}
}

결과

좋은 웹페이지 즐겨찾기