2775 - 부녀회장이 될테야

2775 문제 링크

접근법

처음에 howmany로 몇번 반복할지, A B는 각각 A층 호 이며 floor는 한층에 대한 벡터고 floors는 이중벡터로 아파트 전체를 나타낸다. 호수와 층수를 반복하면서 “A층의 B호에 살려면 (A-1)층의 1호부터 B호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다는 규칙을 반복한다. B-1의 이유는 층수는 0층부터있고 최솟값이 1이지만 호수는 1호수부터 시작하고 입력은 1이라서 1을 빼준다. 다시말해 1호수 = 행렬의 0번째 를 나타내기 위해서다.


#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int howmany,ho,many_floor;
    cin >> howmany;
    vector <int> floor;
    vector< vector< int > > floors;
    many_floor=14;
    ho=14;

    for(int i=1; i<= ho; i++)
    {
        floor.push_back(i);
    }
    floors.push_back(floor);



    for(int i=1; i <=many_floor; i++)
    {
        floor[0] = 1;
        for(int j=1; j<=ho; j++)
        {
            floor[j] = floors[i-1][j] + floor[j-1];
        }
        floors.push_back(floor);
    }


    for(int i=0; i < howmany; i++)
    {
        int A,B;
        cin >> A;
        cin >> B;
        cout << floors[A][B-1] << endl;;
    }


    return 0;
}


결론

문제를 잘읽고 생각한다면 크게 어렵지 않은 문제인것 같다.

업데이트: