반응형
https://www.acmicpc.net/problem/2775
2775번: 부녀회장이 될테야
첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다
www.acmicpc.net
/*
a층의 b호에 살려면 자신의 아래 (a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 살아야한다.
0층의 i호는 i명이 산다.
0층 1,2,3,4...호 1,2,3,4...명
이 문제는 간단히 이중배열을 선언하여 값만 정리해놓으면 될듯 싶다.
*/
fun main(){
var arr = Array(15){IntArray(15)}
var t : Int = 0
for (i in 0 until 15){
arr[i][0] = 0 // 호수에 대한 인원을 구하기 위해 미리 셋팅
arr[0][i] = i // 0층에 대한 호수를 초기화
}
for(i in 1 until 15){
for (j in 1 until 15){
arr[i][j] = arr[i - 1][j] + arr[i][j - 1]
}
}
t = readLine()!!.toInt()
for(i in 0 until t){
var n = readLine()!!.toInt()
var k = readLine()!!.toInt()
println(arr[n][k])
}
}
처음에 0층에 대한 호수 == i명이기 때문에 그에 대한 값과 i층의 0호는 없지만 0으로 초기화를 진행해줬다.
... | ... | ... | ... | ... |
... | (i)층 (j - 1)호 | (i)층 (j) 호 | ... | .. |
... | (i - 1)층 j - 1호 | (i - 1)층 (j)호 | ... | ... |
... | ... | ... | ... | ... |
... | 1층 1호 | 1층 2호 | ... | ... |
... | 0층 1호( =1) | 0층 2호(=2) | ... | ... |
위의 형식을 보게 된다면 우리는 1층 1호는 0층 1호인 1이 된다. 1층 2호 = 0층 1호 + 1층 1호 라는 공식이 나타나게 된다.
이를 참조해 우리는 arr[i][j] = arr[i - 1][j] + arr[i][j - 1] 라는 점화식을 추출해 낼 수 있다.
이를 생각해 진행을 하게 된다면 풀 수 있게 된다.
반응형
'Android & Kotlin > Kotlin Algorithm' 카테고리의 다른 글
[코틀린] 백준 1010번 다리놓기 (0) | 2022.11.12 |
---|---|
[dfs] 백준 2606 코틀린 : 바이러스 (0) | 2022.11.12 |
[백준 코틀린] 1065 : 한수 (0) | 2022.11.11 |
[백준 코틀린] 10814 : 나이순정렬 (0) | 2022.11.11 |
[백준 코틀린] 2750번 : 수 정렬하기 (0) | 2022.11.11 |
댓글