728x90
문제설명
입력 & 출력
나의 풀이
이번 문제는 "이항 계수 1" 문제로, 주어진 정수 n과 를 입력받아 이항 계수를 계산하는 문제입니다.
이항 계수란?
이항 계수(Binomial Coefficient): 조합(combination)에서 사용되는 개념으로, n개의 원소에서 k개를 선택하는 경우의 수를 나타냅니다.
즉, n개 중에서 k개를 순서 없이 뽑는 조합의 수입니다.
주의 사항
이항계수를 구현하는 방법은 여러가지가 있습니다. 재귀 방식, 동적 프로그래밍 방식, 팩토리얼 방식 등이 있습니다. 이 중에서 저는 가장 간단한 팩토리얼 방식을 사용했습니다.
또한 팩토리얼을 구현하는 방법에도 크게 2가지가 있습니다. 첫 째 재귀를 사용한 방법, 둘 째 반복문을 이용한 방식이 있습니다.
1. 재귀를 이용한 팩토리얼
private static int factorial(int n) {
if (n == 0 || n == 1) return 1; // 0! = 1
return n * factorial(n - 1);
}
그러나, 재귀를 사용하면, 이 1이 아닌 경우 계속 재귀 호출을 하기 때문에 이 큰 값일 때 스택 오버플로우가 발생합니다.
2. 반복문을 이용한 팩토리얼
private static int factorial(int n){
if(n == 1) return 1;
int result = 1;
for (int i = 1; i <= n ; i++) {
result*=i;
}
return result;
}
따라서 팩토리얼 방식으로 이항계수를 구한다면, 반복문을 사용해야 합니다.
전체 코드
'Coding Test > 백준' 카테고리의 다른 글
[TIL, 일일 회고] 2024.11.19 - BigInteger 길이를 구하는 방법 (0) | 2024.11.19 |
---|---|
[백준, 10815번] 숫자 카드 (정렬, 이진 탐색, Java) (0) | 2024.11.19 |
[백준, 1296번] 팀 이름 정하기 (구현, 문자열, 정렬, HashMap, Java) (0) | 2024.11.16 |
[백준, 1233번] 주사위 (브루트 포스, 구현, Java) (2) | 2024.11.16 |
[백준, 1173번] 운동 (구현, 시뮬레이션, Java) (1) | 2024.11.15 |