Codingtest

[백준 2775번] 부녀회장이 될테야 파이썬풀이 DP

Runningturtle 2023. 1. 21. 17:16

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

 

DP문제에 익숙하지 않은채 푼 문제였다

브1~실버 수준의 DP문제를 풀며 느낀건 비슷비슷한 문제들같다는 느낌이다

 

주어진 초기정보들로 문제에서 요구하는 조건을 만족하는 상황(dp[i]) 를 점화식형태(a.n+1 = a.n + f(x) ) 만들어 for문의 범위를 조정해 풀어가는느낌

 

2775번문제같은경우 파이썬에서 제공하는 인덱스 슬라이싱기능을 이용하여 풀었다.

n층 1호는 전부 1명이 사는게됨으로 

문제에서 4층 4호를 구해라할때 초기 배열을 [[1~4],[1],[1],[1],[1]]로 초기화한후 (0층은 n호수까지)

2중 for문으로 주어진 조건을 만족하는 인원수를 채워나가도록했다. 

 

time=int(input())

for test_case in range(time):
    k=int(input())
    n=int(input())    
    dp=[[ i for i in range(1,n+1)]]
    [dp.append([1]) for i in range(k)]
    #print(dp) # 호수별 인원
    
    #0은 기본
    for i in range(0,k):
        for j in range(2,n+1):
            dp[i+1].append(sum(dp[i][:j]))
        
    print(dp[-1][-1])