728x90
4층 | 1 | 6 | 21 | 56 | 126 | 252 |
3층 | 1 | 5 | 15 | 35 | 70 | 126 |
2층 | 1 | 4 | 10 | 20 | 35 | 56 |
1층 | 1 | 3 | 6 | 10 | 15 | 21 |
0층 | 1 | 2 | 3 | 4 | 5 | 6 |
이런 식으로 0층은 열에 따라 1씩 증가하고 층이 올라가면 구하고자 하는 방의
왼쪽방 인원 + 아래쪽방 인원 을 해주면 해당 방의 인원이 구해지게 된다
인원을 지정해주기 전에 미리 해당 방까지 도달하기 위해
0으로 채워진 리스트를 만들어 숫자를 대체하여 저장해 가며 채워나가야 한다.
t = int(input())
for i in range(t):
k = int(input())
n = int(input())
resNum = [[0 for col in range(n)]
for row in range(k+1)] # 층별로 인원을 구분
이렇게 층별로 인원을 구분하여 2차원 리스트를 만들었으면 숫자를 위의 공식대로 숫자를 채워나가면 된다.
for i in range(len(resNum)):
for j in range(len(resNum[i])):
if i > 0: # 0층 아닌 경우
resNum[i][j] = resNum[i][j-1] + resNum[i-1][j]
else: # 0층인 경우
resNum[i][j] = resNum[i][j-1] + 1
이때 리스트의 인덱스를 지정할 때 인덱스 오류가 나지 않도록 -1을 해주는 것을 잊으면 안 된다.
마지막으로 우리가 원하는 값은 우리가 만들었던 리스트의 가장 마지막 값이므로
마지막 값을 출력해주면 된다.
print(resNum[-1][-1])
[전체 코드]
t = int(input())
for i in range(t):
k = int(input())
n = int(input())
resNum = [[0 for col in range(n)]
for row in range(k+1)] # 층별로 인원을 구분
for i in range(len(resNum)):
for j in range(len(resNum[i])):
if i > 0: # 0층 아닌 경우
resNum[i][j] = resNum[i][j-1] + resNum[i-1][j]
else: # 0층인 경우
resNum[i][j] = resNum[i][j-1] + 1
print(resNum[-1][-1])
728x90