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 |