경험의 기록

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

 

2775번: 부녀회장이 될테야

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

www.acmicpc.net

 

 

풀이

// [백준] 2775. 부녀회장이 될테야 (Kotlin)

import java.util.*

fun main() = with(Scanner(System.`in`)){
    val t = nextInt()
    val dp = Array(15){Array(15){0} }

    for(i in 0 until 15){
        for(j in 0 until 15){
            if(i == 0 || j == 0) dp[i][j] = j+1
            else dp[i][j] = dp[i-1][j] + dp[i][j-1]
        }
    }

    for(i in 0 until t){
        val k = nextInt()
        val n = nextInt()
        println(dp[k][n-1])
    }
}

일단 0층부터 5호까지의 케이스를 차례대로 나열해보면

1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
1 6 21 56 126

 

인것을 확인할 수 있다.

여기서 자세히 보면 i층의 j호는

자신의 위쪽과 왼쪽 수의 합인것을 찾을 수 있다.

 

따라서 dp로 

dp[i][j] = dp[i-1][j] + dp[i][j-1]

점화식을 세워 풀 수 있다.

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading