개발/algorithm

[백준 2775번] 부녀회장이 될테야

zzi_on2 2022. 2. 12. 15:30

문제 링크

https://www.acmicpc.net/problem/2775

 

2775번: 부녀회장이 될테야

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

www.acmicpc.net

풀이 

사람 수가 누적되므로 

k층의 1호는 k-1층의 1호 사람 수 이고 

k층의 2보다 큰 n호까지는 ( k층의 n-1호의 사람 수 ) + ( k-1층의 n호 사람 수 )이다. 

test = int(input())

for _ in range(test):
  k = int(input())
  n = int(input())
  
  # 0층부터 k층까지 있고 각 층마다 n호 
  num = [ [0] * n for _ in range(k+1)]

  # 1호부터 시작하고 0층의 경우 i호에 i명 거주 
  for i in range(n):
    num[0][i] = i + 1 
  
  # 1층부터 k층까지 
  for i in range(1, k+1):
    # 층별 각 호마다 반복 
    for j in range(n):
      # 1호면 전 층의 1호 사람 수
      if j == 0:
        num[i][j] = num[i-1][0]
      # 1호가 아니면 전 호수의 사람 수 + 전 층의 해당 호수 사람 수 
      else :
        num[i][j] = num[i][j-1] + num[i-1][j]

  print(num[k][n-1])