풀이-1
import java.util.Scanner;
public class Main_15651 {//시간 초과 (중복순열은 출력되는 경우의 수가 많다)
/*
문제)
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
- 1부터 N까지 자연수 중에서 M개를 고른 수열
==> 같은 수를 여러 번 골라도 된다.
입력)
첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7)
출력)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
수열은 사전 순으로 증가하는 순서로 출력해야 한다.
*/
static int N,M;
static int[]answer;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
N = scan.nextInt(); //전체 데이터 개수(자연수)
M = scan.nextInt(); //고를 수 있는 개수
answer = new int[M];
permute(0); //0: 몇개를 선택했는지 표현
scan.close();
}//main
private static void permute(int depth) {//재귀함수
//끝날 조건
if(depth == M) { //선택을 끝마쳤을때
for(int num : answer){//선택데이터 출력
System.out.print(num+" ");
}
System.out.println();
return;//끝마쳐!! (나를 호출한 메서드에게 제어권 넘기기)
}
//반복 처리문
for(int i=1; i<=N; i++){//선택할 수 있는 요소에 대한 표현
answer[depth]=i;//선택해!! i는 자연수를 의미
permute(depth+1); //다음 선택을 표현
}
}//permute
}
풀이-2
import java.util.Scanner;
public class Main_15651_v2 {//시간 초과 (중복순열은 출력되는 경우의 수가 많다)
/*
문제)
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
- 1부터 N까지 자연수 중에서 M개를 고른 수열
==> 같은 수를 여러 번 골라도 된다.
입력)
첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7)
출력)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
수열은 사전 순으로 증가하는 순서로 출력해야 한다.
*/
static int N,M;
static int[]answer;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
N = scan.nextInt(); //전체 데이터 개수(자연수)
M = scan.nextInt(); //고를 수 있는 개수
answer = new int[M];
permute(0); //0: 몇개를 선택했는지 표현
//출력은 한번만!
System.out.print(sb.toString());
scan.close();
}//main
private static void permute(int depth) {//재귀함수
//끝날 조건
if(depth == M) { //선택을 끝마쳤을때
for(int num : answer){//선택데이터 출력
sb.append(num)
.append(' ');
}
sb.append('\n');
return;//끝마쳐!! (나를 호출한 메서드에게 제어권 넘기기)
}
//반복 처리문
for(int i=1; i<=N; i++){//선택할 수 있는 요소에 대한 표현
answer[depth]=i;//선택해!! i는 자연수를 의미
permute(depth+1); //다음 선택을 표현
}
}//permute
}
'코딩테스트' 카테고리의 다른 글
백준 - 2961번 도영이가 만든 맛있는 음식 (0) | 2025.04.09 |
---|---|
백준 -15652번 N 과 M (4) (0) | 2025.04.08 |
백준 - 15650번 N 과 M (2) (0) | 2025.04.08 |
Recursive(재귀) (0) | 2025.04.08 |
백준 - 15649번 N과 M (0) | 2025.04.08 |