반응형
- 알고리즘 분류 : DFS
- 사용 언어 : JAVA
- 문제 요점
- N과 M(1) 문제에서 같은 수도 중복될 수 있다. 라는 부분이 추가된 문제.
- 수를 선택할 때 처음부터 탐색하면 쉽게 풀이 가능
소스 설명은 주석을 참고해주세요.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static int N, M;
// 출력을 한번에 하기 위해 사용
public static StringBuilder sb = new StringBuilder();
// 조합 계산
public static void calc(int num, int count, int[] arr) {
// 선택한 수가 M일 때 출력
if(count >= M) {
for(int i=0; i<M; i++) {
sb.append((arr[i]) + " ");
}
sb.append("\n");
// 함수 종료
return;
}
// 수 선택하기
for(int i=0; i<N; i++) {
arr[count] = i+1;
calc(i, count+1, arr);
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
int[] arr = new int[M];
calc(0, 0, arr);
System.out.println(sb.toString());
}
}
반응형
'Algorithm' 카테고리의 다른 글
[BAEKJOON] 5212번 : 지구온난화 (JAVA) (0) | 2022.03.28 |
---|---|
[BAEKJOON] 9012번 : 괄호 (JAVA) (0) | 2022.03.27 |
[BAEKJOON] 15650번 : N과 M(2) (JAVA) (0) | 2022.03.22 |
[BAEKJOON] 15649번 : N과 M(1) (JAVA) (0) | 2022.03.21 |
[Programmers] k진수에서 소수 개수 구하기 (JAVA) (0) | 2022.03.20 |