기록 보관소

[Baekjoon/백준] 11050번: 이항 계수 1(C/C++) 본문

코딩 테스트/백준

[Baekjoon/백준] 11050번: 이항 계수 1(C/C++)

JongHoon 2022. 3. 27. 23:09

단계별로 풀어보기 17단계(정수론 및 조합론) 7번 문제

https://www.acmicpc.net/step/18

 

정수론 및 조합론 단계

N개의 물건 중 순서를 고려하지 않고 K개를 고르는 경우의 수, 이항 계수를 구하는 문제

www.acmicpc.net


백준 11050번: 이항 계수 1

https://www.acmicpc.net/problem/11050

 

11050번: 이항 계수 1

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net


문제 설명

자연수 N과 정수 K가 주어졌을 때 이항 계수 nCk 를 구하는 프로그램을 작성하시오.


입력과 출력

입력: 첫째 줄에 N K가 주어진다. (1 ≤ N ≤ 10, 0 ≤ K  N)

출력: 이항 계수 nCk 를 출력한다.


접근 방법

이번 문제는 자연수 N과 정수 K를 입력받아 이항 계수 nCk를 출력하는 문제다.

이항계수

일단 이항 계수란 N개의 서로 다른 것들 중 K개를 선택하는 것의 조합의 개수를 의미한다. 조금 더 직관적으로 설명하면 1, 2, 3, 4, 5가 있고 이 중 숫자 2개를 선택해야할 때, 이 2개를 선택하는 조합의 개수다.

아무튼 위 캡처 설명과, N과 K범위가 10까지 밖에 안되므로 그냥 팩토리얼을 이용해서 문제를 해결할 수 있다. 해당 캡처 이미지는 이 블로그를 통해서 가져왔다.


코드

#include <iostream>
using namespace std;

int factorial(int A) {
	int result = 1;
	for (int i = A; i > 0; i--)
		result *= i;

	return result;
}

int main(int argc, char * argv[]) {
	int N, K;
	
	cin >> N >> K;

	cout << factorial(N) / (factorial(K) * factorial(N - K)) << endl;

	return 0;
}

결과

백준 제출 결과