반응형
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 | #include <iostream> using namespace std; int apart[15][15]; void Init() { for (int i = 0; i < 15; i++) apart[0][i] = i + 1; for (int i = 1; i < 15; i++) { for (int j = 0; j < 15; j++) { for (int k = 0; k <= j; k++) apart[i][j] += apart[i - 1][k]; } } } int main() { int t, n, k; cin >> t; Init(); while (t--) { cin >> k >> n; cout << apart[k][n - 1] << '\n'; } } | cs |
문제를 먼저 파악하는 것이 중요하다.
0층에 사는 사람들의 인원은 i호에 산다면 i명이다. 그러므로 Init함수에서 apart[0][i] = i + 1로 초기화해주었다.
다음에 문제를 읽어보면 a층 b호에 사는 사람들의 인원수는 a-1층 1호부터 b호까지 사는 사람들의 합만큼 있어야한다.
바로 아래 사는 사람들의 합만 구해주면 되는 것이다.
그래서 for문을 세번 반복시켜서 apart 배열을 완성시킨다.
이후 값을 받아서 k값은 그대로 층에 적용시켜주고 호에 해당하는 n은 하나를 감소시켜서 출력시켜주면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
6064번 카잉 달력 (0) | 2018.10.11 |
---|---|
1475번 방 번호 (0) | 2018.10.10 |
10250번 ACM 호텔 (0) | 2018.10.10 |
1193번 분수찾기 (0) | 2018.10.10 |
2292번 벌집 (0) | 2018.10.10 |