15651 N과 M (3)

chi·2023년 10월 30일

백준

목록 보기
10/20
import java.util.Scanner;
import java.util.ArrayList;

public class Main {
	public static StringBuilder sb = new StringBuilder();
	
	public static void putting(ArrayList<Integer> list, ArrayList<ArrayList<Integer>> all_list, int n, int m) {
		if (list.size()>=m) {
			all_list.add(new ArrayList<>(list)); // 새로운 ArrayList를 생성하여 추가
			list.remove(list.size() - 1); //pop
			return;
		}
		for(int i=1; i<=n; i++) {
			//if(list.contains(i)) continue;
			list.add(i);
			putting(list, all_list, n, m);
			
		}
		if (list.size()!=0) list.remove(list.size() - 1); //pop
		
		
			
	}
	

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt(); //1~n
		int m = scan.nextInt(); //m개 고르기
		ArrayList<Integer> list = new ArrayList<Integer>();
		ArrayList<ArrayList<Integer>> all_list = new ArrayList<ArrayList<Integer>>();
		putting(list, all_list, n, m);
		
		for (int i=0; i<all_list.size(); i++) {
			for (int j=0; j<m; j++) {
				sb.append(all_list.get(i).get(j)+" ");
			}
			sb.append("\n");
			
		}
		System.out.print(sb);

		scan.close();
	}
	
}

주의

시간 초과

시간 초과 나서 결국 출력은 StringBuilder로 함

0개의 댓글