본문 바로가기
Coding Test Java

조합구하기 (DFS, 메모이제이션)

by seonggu 2024. 2. 5.
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));
	}
}

'Coding Test Java' 카테고리의 다른 글

순열구하기 (DFS)  (1) 2024.02.05
동전교환 (DFS)  (0) 2024.02.05
인프런 - LRU  (0) 2024.01.30
인프런 - 삽입정렬  (0) 2024.01.30
인프런 - 버블정렬  (0) 2024.01.30