조합 구하기
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);
}
}
'코딩 테스트(JAVA) > 인프런 문제풀이' 카테고리의 다른 글
봉우리 (0) | 2022.05.06 |
---|---|
합이 같은 부분집합 (DFS : 아마존 인터뷰) (0) | 2022.05.04 |
순열 구하기 (0) | 2022.05.03 |
중복순열 (0) | 2022.05.03 |
💡 이진트리 순회(BFS: Breadth-First Search, 넓이우선탐색, 레벨탐색) (0) | 2022.04.24 |