조합 구하기

2022. 5. 3. 12:36코딩 테스트(JAVA)/인프런 문제풀이

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 Main {
	static int[] combi;
	static int n, m;
	public void DFS(int L, int s) { // L :레벨, s : (기준점이 되는)스타트 번호
		if(L == m) {
			for(int x : combi) System.out.print(x + " ");
			System.out.println();
		}else {
			for(int i=s; i<=n; i++) { // s부터 시작
				combi[L] = i;
				DFS(L+1, i+1);	
			}
		}
	}

	public static void main(String[] args) { 
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		n = kb.nextInt();
		m = kb.nextInt();
		combi = new int[m];
		T.DFS(0,1);
	}

}