728x90

https://www.acmicpc.net/problem/2407

 

2407번: 조합

n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n)

www.acmicpc.net

 

 

풀이)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main_BJ_2407_조합 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        BigInteger sum = BigInteger.ONE;
        BigInteger div = BigInteger.ONE;

        for(int i=0; i<m; i++){
            sum = sum.multiply(new BigInteger(String.valueOf(n-i)));
            div = div.multiply(new BigInteger(String.valueOf(i+1)));
        }

        BigInteger ans = sum.divide(div);
        System.out.println(ans);
    }//main
}

단순히 BigInteger만 쓰면 해결되는 문제였다.

BigInteger에서 .ONE을 사용하는 경우를 알게된 경험이었다.

 

조합은 간단하게 nCr = n! / (n-r)! * r!을 이용하면 된다.

코드에 적용하면 n부터 거꾸로 m의 개수까지 곱한 것을 r!로 나누면 된다는 의미!

 

728x90

'코테 > 백준' 카테고리의 다른 글

백준 9465 스티커(JAVA)  (0) 2023.03.11
백준 2751 수 정렬하기2(JAVA)  (0) 2023.03.11
백준 13549 숨바꼭질3(JAVA)  (1) 2023.03.08
백준 15657 N과 M (8) (JAVA)  (0) 2023.03.07
백준 14938 서강그라운드(JAVA)  (0) 2023.03.05

+ Recent posts