Algorithm/백준 자바
백준 15650 자바 (N 과 M(2))
눈오는1월
2024. 4. 22. 17:58
728x90
<문제>
https://www.acmicpc.net/problem/15650
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
<풀이>
1. 어떤 접근으로 문제를 접근하려고 했는지
nCr의 경우의 수를 출력하는 프로그램이다.
조합은 순서가 상관없으므로 매개변수에 v라는 값을 통해 한번 출력을 했을 때 순서가 바뀌어서 출력되는 부분을 막는다.
2. 문제를 해결하기 위한 기능
nCr 기능 구현
<코드>
import java.util.*;
import java.io.*;
public class Main {
public static int n, m;
public static ArrayList<Integer> arrayList = new ArrayList<>();
public static void print() {
for(int i = 0; i < arrayList.size(); i++) {
System.out.print(arrayList.get(i) + " ");
}
System.out.println();
}
public static void dfs(int v, int h) {
if(h == m + 1) {
print();
return;
}
for(int i = v; i <= n; i++) {
arrayList.add(i);
dfs(i + 1, h + 1);
arrayList.remove(arrayList.size() - 1);
}
}
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st= new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
dfs(1,1);
}
}
728x90