arr=[]
for i in range(15):
arr.append([0]*14)
arr[0]=[1,2,3,4,5,6,7,8,9,10,11,12,13,14]
for i in range(1,15):
for j in range(14):
arr[i][j]=arr[i-1][j]+arr[i][j-1]
t=int(input())
for _ in range(t):
k=int(input())
n=int(input())
print(arr[k][n-1])
#
이차원 리스트를 구현하는 게 익숙하지 않아서 힘들었다.
#
일단 arr이라는 리스트에다가 0이 14개 씩 들어있는 리스트를 15개 추가했다.
이유는 층수는 0층부터 14층, 호수는 1호부터 14호까지 있다고 했기 때문이다.
0층 호수에 사는 사람의 수는 문제에서 알려주었으므로
arr[0]은 1호부터 14호까지, 1~14가 들어간 리스트로 만들어준다.
이제 1층부터 14층까지의 arr[i][j]즉 거주민 수를 구하는 공식은
arr[i][j]=arr[i-1][j]+arr[i][j-1]이다.
바로 아래층 같은 호수에 사는 사람 수
+ 아랫층 1호부터 바로 전 호수까지 사는 사람 수의 합(==같은 층의 전 호수, 옆집에 사는 사람 수)
그다음에 입력값 받아서 출력을 하면 되는데 왜 arr[k][n]이 아니라 arr[k][n-1]을 출력한 걸까?
0번째부터 시작하는 리스트의 관점에서는 n호가 n-1호이기 때문.
ex) 3호 = 세번째 집= arr[k][2]
그래서 n-1로 쓰면 딱 정확하다.
이게 최선일 리가 없는데 다른 사람들이 푼 건 아직 못 살펴봤다.
'알고리즘 PS > DP' 카테고리의 다른 글
백준 #26529 Bunnies (0) | 2023.09.04 |
---|---|
다이나믹 프로그래밍이란? (0) | 2023.09.03 |
백준 #17202 핸드폰 번호 궁합 (0) | 2023.09.03 |
백준 #2748 피보나치 수 2 (0) | 2023.09.03 |
백준 #24416 알고리즘 수업-피보나치 수 1 (0) | 2023.09.03 |