반응형
https://www.acmicpc.net/problem/11050
- 문제
- 문제 풀이
백준 11050번 이항 계수 1은 브론즈 1 난이도의 수학 및 구현 문제이다. 이 문제에서는 정수 N과 K가 주어진다. 이때 nCk를 구하면 된다. 여기서 C는 Combination을 뜻한다.
우선 nCr의 공식은 다음과 같다.
따라서 nCk를 구하려면 n! 과 k!, 그리고 (n - k)! 를 구해야 한다. 따라서 팩토리얼을 구하는 함수를 아래에 있는 코드처럼 따로 메서드로 만들어준다. 이 메서드는 int n을 매개 변수로 갖고 n! 를 계산한 후에 반환시켜주는 함수이다.
그리고 분자와 분모를 따로 구분해준다. 이때 분자는 long형 변수 top이고, 분모는 long형 변수 bottom이라고 하겠다. 이때 top과 bottom은 다음과 같다.
top = factorial(n)
bottom = factorial (k) * factorial (n - k)
top과 bottom을 구했으면 top / bottom 한 값을 출력만 해주면 된다.
자세한 코드는 아래에 있는 코드를 참고하면 되겠다.
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
long top = factorial(n);
long bottom = factorial(k) * factorial(n-k);
System.out.print(top / bottom);
}
// n!를 계산하는 함수
static long factorial(int n) {
long ret = 1;
while (n > 1) {
ret *= n;
n--;
}
return ret;
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 10953번 : A+B - 6 – JAVA [자바] (0) | 2022.08.15 |
---|---|
[백준] 3046번 : R2 – JAVA [자바] (0) | 2022.08.15 |
[백준] 2747번 : 피보나치 수 – JAVA [자바] (0) | 2022.08.14 |
[백준] 3009번 : 네 번째 점 – JAVA [자바] (0) | 2022.08.14 |
[백준] 2748번 : 피보나치 수 2 – JAVA [자바] (0) | 2022.08.14 |
댓글