kakasoo

[memorization] 이항 계수 1 (백준 11050번) 본문

프로그래밍/알고리즘 풀이

[memorization] 이항 계수 1 (백준 11050번)

카카수(kakasoo) 2020. 3. 3. 14:55
반응형

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
 
int memo[20= { 1,1, };
 
int factorial(int num)
{
    if (num == 0 || num == 1return 1;
 
    if (!memo[num])
    {
        return memo[num] = num * factorial(num - 1);
    }
    else
        return memo[num];
}
 
int main(void)
{
    int n,k;
    cin >> n >> k;
 
    cout << factorial(n) / (factorial(k) * factorial(n - k));
}

 

memorization : 암기 ; 재귀함수에서 stack이 쌓이는 것을 방지하고자

탐색한 값을 따로 저장해두고, 이미 탐색한 값에 접근할 경우 재귀로 가지 않고 바로 값을 전달하는 방식.

 

나는 이런 문제가 제일 싫다, 문제 자체가 싫다기 보다 이름이.

이항 계수가 뭔가 했더니 결국 조합(combination)이었다.

 

// 내가 푼 문제들을 올리고 있긴 한데, 아무래도 문제를 220개 정도 푼 다음에야 제대로 포스팅을 시작하니,

// 문제가 그간 많이 쌓여서 역순으로 올리고 있다.

// 혹시나 문제 푸는 순서가 궁금하다면 그냥 다시 백준으로 가서 확인해라 (나에게 보내는 메세지)

반응형