“a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다”라는 이상한 계약조항이있다.
4층 | 1 | 6 | 21 | 56 | 126 |
3층 | 1 | 5 | 15 | 35 | 70 |
2층 | 1 | 4 | 10 | 20 | 35 |
1층 | 1 | 3 | 6 | 10 | 15 |
0층 | 1 | 2 | 3 | 4 | 5 |
문제를 바탕으로 각 거주민 수를 구해보았다.
1층의 2호실은 0층의 1호실 +2호실 인원
1층의 3호실은 0층의 1호실 + 2호실 + 3호실을 더한 것과 같다는 것을 알 수있다.
더욱 간단하게 정리하자면 1층의 3호 를 구하려면
0층의 1호와 0층의 2호는 결국 1층의 2호 의 값과 같으므로 1층의 2호 에 현재 저장된 값인 0층의 3호 를 더하면 되는 것이다.
위의 코드를 보면 1층의 3호의 인원 수를 구하려면 0층의 영향을 받는 것을 알 수있다.
0층의 1,2,3인원이 있는 것을 볼 수있으며,
1층의 2호실 은 = 3 이되고, 1층의 3호실은 = 6이 되는 것을 볼 수있다.
0부터 시작해서 j에 1~2값이 들어가서 갱신되는 흐름을 살펴보면 다음과 같다
마지막으로 3층 4호에 살고 있는 인원을 구하려면 다음과 같다
즉 0층에 대한 데이터를 저장한 테이블 하나를 새롭게 계속 덮어써서 갱신하는 방법.
마지막 수를 출력하면 해당 값인 1층 3호실이 출력된다.