Coding Test Java
조합구하기 (DFS, 메모이제이션)
seonggu
2024. 2. 5. 20:53
import java.util.*;
// 조합의 경우수 (메모이제이션)
// 5C3 = 4C2 + 4C3
// r==0, n==r -> 1 break
// 2C1같은 값이 한번 더 나오면 배열(dy)에서 메모이제이션한 값 가져오기
class Main{
int[][] dy = new int[35][35]; //배열에 저장하기 메모이제이션
public int DFS(int n, int r){
if(dy[n][r] > 0) return dy[n][r]; //메모이제이션 값 리턴
if(n==r || r==0)return 1;
else {
return dy[n][r] = DFS(n-1, r-1)+DFS(n-1, r); // DFS 재귀값에 저장하기
}
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int r = kb.nextInt();
System.out.println(T.DFS(n, r));
}
}