BOJ 문제풀이

백준 11050번 c++ 풀이

koreasunoo 2021. 8. 5. 23:02

안녕하세요 오늘은 이항계수를 출력해야하는 문제를 풀어보겠습니다.

 

위 사진이 이항계수를 나타낸것입니다. 문제에서 이미 0<k<=n이라고 조건이 주어져있기때문에 범위에 따라 값이 달라지는 것은 생각을 하지 않겠습니다.

 

전략:

1. 팩토리얼 값을 저장해줄 길이 11짜리 배열을 선언해준다..

2. int 타입을 factorial이라는 함수를 정의해주어 만약 배열에 값이 있으면 그 값을 반환하고, 값이 없으면 factorial(n-1) * n을 arr[n]에 대입하고 그 값을 반환해준다.

3. 이항계수를 계산하여 출력해준다.

 

코드:

#include <bits/stdc++.h>
using namespace std;
int arr[11];
int factorial(int n){
	if(arr[n]) return arr[n];
	else{
		arr[n] = factorial(n-1) * n;
		return arr[n];
	}
}
int main(){
	arr[0] = 1;
	arr[1] = 1;
	arr[2] = 2;
	int n, k;
	cin>>n>>k;
	cout<<factorial(n)/(factorial(k) * factorial(n-k));
}

'BOJ 문제풀이' 카테고리의 다른 글

백준 2164번 c++ 풀이  (0) 2021.08.06
백준 10845번 c++ 풀이  (0) 2021.08.06
백준 18870번 c++ 풀이  (0) 2021.08.05
백준 1920번 c++ 풀이  (0) 2021.08.04
백준 1259 c++ 풀이  (0) 2021.08.04