bdfgdfg

[실버 4] 1010번 다리 놓기 본문

코딩테스트/백준

[실버 4] 1010번 다리 놓기

marmelo12 2022. 1. 7. 21:33
반응형
#include <iostream>
#include <memory.h>
using namespace std;

int memo[50][50];

int Combination(int n, int k)
{
	// 0개를 선택하거나 5개의 공에서 5개를 선택하는 경우의 수는 1.
	if (k == 0 || n == k)
		return 1;
	if (memo[n][k] != -1) 
		return memo[n][k];

	// 한번도 구한적이 없다면 계산하고 저장.
	return memo[n][k] = Combination(n - 1, k) + Combination(n - 1, k - 1);
}

int main(void)
{
	::memset(memo, -1, sizeof(memo));
	int count,west,east;
	cin >> count;

	for (int i = 0; i < count; ++i)
	{
		cin >> west >> east;
		std::cout << Combination(east, west) << std::endl;

	}
	return 0;
}

경우의 수와 n과 r이 같은 경우 1이 나올 때 조합을 떠올리자.

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

5543번(상근날드), 5575(타임카드)  (0) 2021.12.19
2530번,2588번  (0) 2021.09.25
2480번, 2525번  (0) 2021.09.17
3046번,5564번,8393번  (0) 2021.09.12
2845번, 2914번, 3003번  (0) 2021.09.09
Comments