반응형
문제 출처 : https://www.acmicpc.net/problem/11050
풀이
간단한 재귀 문제이다.
문제는, nCm을 구하는 건데, nCm = n! / (n-m)! / m!이다.
본인은 makeFacto 함수로 미리 1부터 n까지의 팩토리얼 값을 구해놓고 사용했다.
코드의 핵심은 makeFacto의 리턴 부분 .also이다.
코틀린에선 c++와 달리 return facto[n] = n*makeFacto(n-1)이 안 되니
return (n*makeFacto(n-1)).also{facto[n] = it}로 사용해준다.
코드
val br = System.`in`.bufferedReader()
val facto = IntArray(11){1}
fun makeFacto(n : Int) : Int{
if(n==1){
return 1
}
return (n*makeFacto(n-1)).also{ facto[n] = it }
}
fun main() = with(System.out.bufferedWriter()){
val (n ,m) = br.readLine().split(' ').map{it.toInt()}
facto[1]=1
makeFacto(n)
write("${facto[n]/facto[n-m]/facto[m]}")
close()
}
반응형
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
백준 17136 색종이 붙이기 Kotlin (백트래킹) (0) | 2022.01.18 |
---|---|
백준 12101 1, 2, 3 더하기 2 Kotlin (순열) (0) | 2022.01.17 |
백준 18430 무기 공학 Kotlin (백트래킹) (0) | 2022.01.15 |
백준 12761 돌다리 Kotlin (bfs) (0) | 2022.01.13 |
백준 3187 양치기 꿍 Kotlin (dfs) (0) | 2022.01.13 |
댓글