a층의 b호에 살기 위해서 (a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야한다는 규칙이있다. 아파트는 0층부터 존재하며 각 층은 1호부터 있고, 0층의 i호에는 i명이 산다.
문제에 따르면
아래층의 1호부터 b호까지 사는 사람의 수만큼 윗층 b호에서 산다는 소리다.
0층 | 1 2 3 4 ... i
1층 | 1 3 6 10 ...
2층 | 1 4 10 ...
처럼 살아야 한다.
for _ in range(int(input())):
k = int(input())
n = int(input())
apt = [[i for i in range(1, n + 1)]] #0층 j호에는 j명이 산다
for i in range(k):
floor = []
for j in range(1, n + 1):
floor.append(sum(apt[i][:j]))
apt.append(floor)
print(apt[k][n - 1])
매번 sum()을 호출하기 때문에 비효율적이다.
이전 호수의 값에 아래층 같은 호수의 값을 더하는 방법이 있다.
for _ in range(int(input())):
k = int(input())
n = int(input())
floor = [i for i in range(1, n + 1)]
for _ in range(k):
for i in range(1, n): #1호는 어차피 계속 1명임
floor[i] += floor[i - 1]
print(floor[n - 1])