본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

백준알고리즘 2153번 소수 단어

문제 링크


문제 푸는데 그렇게 어려운 문제였다.......

방법은 조합을이용한 것 그리고 다이나믹 프로그래밍으로 문제를 풀 수 있다.

조합을 간단하게 설명하자면 2 5인 경우 5*4 / 2*1로하면 값이 나온다.  3 6 이라면 6*5*4*3*2*1 / 3*2*1 로하면 값이 나온다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.math.BigInteger;
import java.util.Scanner;
 
public class Main { 
    public static void main(String[] args) { 
        Scanner scan = new Scanner(System.in); 
        int num = scan.nextInt(); 
        
        for (int i = 0; i < num; i++) { 
            int r = scan.nextInt(); 
            int n = scan.nextInt(); 
            
            System.out.println(calculate(r,n)); 
        } 
    } 
 
    public static BigInteger calculate(int r, int n) { 
        BigInteger result = new BigInteger("1"); 
        
        int temp = r; 
        
        while(r > 0) { 
            break;
        }
        
        for( ; r > 0; r--) {
            result = result.multiply(BigInteger.valueOf(n));
            --n; 
        }
        
        for( ; temp > 0; temp--) {
            result = result.divide(BigInteger.valueOf(temp));
        }
        
        
        return result; 
    } 
}