문제
1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 M개를 뽑는 방법의 수를 출력하는 프로그램을 작성하세요.
입력
첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N)이 주어집니다.
출력
첫 번째 줄에 결과를 출력합니다.
출력순서를 사전순으로 오름차순으로 출력합니다.
예시 입력 1
4 2
예시 출력 1
1 2
1 3
1 4
2 3
2 4
3 4
내 풀이 = 선생님 풀이
import java.util.Scanner;
public class Main8_9 {
static int n, m;
static int[] combi;
public void DFS(int L, int s) { // 4 2
if(L==m){
for(int x : combi) System.out.print(x + " ");
System.out.println();
}
else {
for (int i = s; i <= n; i++) {
combi[L] = i;
DFS(L+1, i+1);
}
}
}
public static void main(String[] args) {
Main8_9 T = new Main8_9();
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
combi = new int[m];
T.DFS(0, 1);
}
}
다음 DFS를 호출할 때 시작 숫자를 +1해서 파라미터로 같이 넘기는 방식 !
어떤 숫자를 썼는지 ch배열로 확인할 필요 없이 순서대로 돌고 끝내면 되는 간단한 코드이다.
결과
'Algorithm > Inflearn' 카테고리의 다른 글
[Inflearn] 자바 알고리즘 문제풀이 #08-11 11. 미로의 최단거리 통로(BFS) (0) | 2023.04.25 |
---|---|
[Inflearn] 자바 알고리즘 문제풀이 #08-10 10. 미로탐색(DFS) (0) | 2023.04.24 |
[Inflearn] 자바 알고리즘 문제풀이 #08-08 8. 순열 추측하기(DFS, 조합, 메모이제이션) (1) | 2023.04.21 |
[Inflearn] 자바 알고리즘 문제풀이 #08-07 7. 조합의 경우수(DFS, 메모이제이션) (1) | 2023.04.17 |
[Inflearn] 자바 알고리즘 문제풀이 #08-05 5. 동전교환(DFS) (0) | 2023.04.13 |