알고리즘 문제 풀이

백준 2407 조합 (JAVA 자바)

superbono 2021. 4. 1. 22:44
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		BigInteger res = new BigInteger("0");
		int N, M;
		Scanner sc = new Scanner(System.in);
		N = sc.nextInt();
		M = sc.nextInt();
		
		int tmp = N - M;
		M = M > tmp ? tmp : M;
		BigInteger upper = new BigInteger("1");
		BigInteger down = new BigInteger("1");
		tmp = M;
		for (int i = 0; i < tmp; i++) {
			upper = upper.multiply(new BigInteger(String.valueOf(N - i)));
			down = down.multiply(new BigInteger(String.valueOf(M - i)));
		}
		res = upper.divide(down);
		System.out.println(res);
	}
}


// 맨 처음에 long으로 풀어서 당연히 풀리겠지? 했는데 한 번 틀렸다...
// 알고보니 BigInteger라는게 있다구