[2407번] 조합 ( 조합, BigInteger )

Loopy·2023년 12월 7일
0

코테 문제들

목록 보기
50/113


✅ BigInteger

int, long 보다 더 큰 수를 저장하는 class

임의 정밀도로 정수를 나타낼 수 있는 클래스이다. 이 클래스는 정수의 크기에 제한을 받지 않기 때문에 매우 큰 정수를 다룰 수 있다. 
일반적인 int나 long의 표현 범위를 넘어선 매우 큰 정수를 다룰 때 사용됩니다.

예를 들어, int의 표현 범위는 약 -2^31부터 2^31-1까지이고, long의 표현 범위는 약 -2^63부터 2^63-1까지이다. 이에 비해 BigInteger는 이러한 제한이 없어서 매우 큰 정수를 다룰 수 있다.

리스트처럼 값을 초기화해주는 과정이 필요하다.


✅ 코드

import java.math.BigInteger;
import java.util.Collection;
import java.util.Scanner;


public class Main {

	static BigInteger cache[][];

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int k = sc.nextInt();
		cache = new BigInteger[n + 1][n + 1];

		for (int i = 0; i <= n; i++) {
			for (int j = 0; j <= n; j++) {
				cache[i][j] = BigInteger.ZERO;
			}
		}

		System.out.println(Combination(n,k));
	}

	private static BigInteger Combination(int n, int k) {
		if (n == k || k == 0) {
			return cache[n][k] = BigInteger.valueOf(1);
		}

		if (cache[n][k].compareTo(BigInteger.ZERO) != 0) {
			return cache[n][k];
		}

		return cache[n][k] = Combination(n - 1, k - 1).add(Combination(n - 1, k));
	}


}

profile
잔망루피의 알쓸코딩

0개의 댓글