알고리즘

소스코드 - Kotlin

lateinit var dp: Array<Int>

fun main() {
    val n = readIn().toInt()
    dp = Array(n+1) { 0 }
    val answer = fibo(n)
    println(answer)
}

fun fibo(n: Int): Int {
    if(n == 0) return 0
    if(n == 1 || n == 2) return 1
    if(dp[n] != 0) return dp[n] // 같은 연산에 대한 값이 저장되어있는지 확인
    dp[n] = (fibo(n-1)  + fibo(n-2)) // 값 저장
    return dp[n]
}

범위 및 함수 사용시 유의사항

시간 복잡도