CafeM0ca

[BOJ] 2275번 부녀회장이 될테야(feat. lambda) 본문

Programming/백준

[BOJ] 2275번 부녀회장이 될테야(feat. lambda)

M0ca 2018. 4. 29. 03:42
반응형

재귀함수로 메모이제이션을 이용했다.


이게 0층4호 부터 3층 4호까지 적어보면 행렬의 모양을 띄우는데 

a층 b호 = a층 b-1호 + a-1층 b호다. 

모카는 문제에서 제시한 방법대로 풀었다.


람다 처음으로 적용해서 써봤는데 쏠쏠하다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
auto NextFloor(int k,int b)
{
 
    static int memo[16][16]{0};
 
    if(memo[k][b]) return memo[k][b];
    if(k == 0)
    {
        memo[k][b] = b;
        return memo[k][b];  // 내 마음속에 저~장
    } else{
            return [&](int ho)->int{ // 각 층을 더한다.
                    int myfloor = 0;
                    for(int i=1;i<=ho;i++){
                        myfloor += NextFloor(k-1,i);
                    }
                    memo[k][b] = myfloor;
                    return memo[k][b];
            }(b);
    }        
}
int main()
{
    cin.tie(NULL);
    cin.sync_with_stdio(false);
    int i,k,n,T;
    cin >> T;
    for(int iter=0;iter<T;iter++)
    {
        cin >> k >> n;
        cout << NextFloor(k,n) << endl;
    }
    return 0;
}
 
cs


반응형
Comments