T'SPACE

다채로운 에디터들의 이야기

컴퓨터공학/알고리즘

[백준,C++] 11050 : 이항계수

Tonny Kang 2024. 1. 31. 16:32
반응형
 

 

 

문제


자연수 N과 정수 K가 주어졌을 때 이항 계수

(N K)

를 구하는 프로그램을 작성하시오.

SMALL

입력


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

반응형

출력


 

(N K)

를 출력한다.

 

경우에 따라

우리가 빠르다고 생각하는 방식과 컴퓨터가 빠르다고 생각하는 기준은 다르다

 

우리는 흔히 고딩때 부터 확통을 하면 nCk를 계산 할 때 n!/k!(n-k)!을 활용해 이미 약분 된 공식을 습관화 해서 사용한다

 

그러나 컴퓨터는 이것 보다 파스칼의 삼각형을 이용한 방법을 선호한다

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int pascal(int N, int k) {
	if (k == 0) {
		return 1;
	}
	if (k == 1) {
		return N;
	}
	if (N == k) {
		return 1;
	}
	if (N == k + 1) {
		return N;
	}
	return pascal(N - 1, k) + pascal(N - 1, k - 1);
}

int main() {
	int N;
	int k;

	cin >> N;
	cin >> k;
	
	

	cout << pascal(N,k);
}
 

신지모루 범퍼 강화 4DX 에어팁 젤리 휴대폰 케이스 "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

위는 파스칼 삼각형의 상부이며

 

이를 통해 우리는 유용한 공식

 

nCk=(nC(k-1)) + ((n-1)C(k-1)) 을 활용해서 재귀 함수를 만들 수 있다

 

재귀 함수의 끝을

 

N이랑 K 가 같으면 1이고

1 차이가 나면 N을 return 하면 된다

 

<백준, C++, 10816: 숫자 카드 2>

https://tonnykang.tistory.com/93

 

[백준,C++] 1920 : 수 찾기

문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로

tonnykang.tistory.com

 

반응형

'컴퓨터공학 > 알고리즘' 카테고리의 다른 글

[백준,C++] 7568 : 덩치  (62) 2024.02.11
[백준,C++] 4949: 균형잡힌 세상  (57) 2024.02.10
[백준,C++] 10816 : 숫자 카드 2  (75) 2024.01.30
[백준,C++] 1920 : 수 찾기  (6) 2024.01.28
[백준,C++] 1181: 단어 정렬  (10) 2024.01.27