본문 바로가기

알고리즘

릿코드 91. Decode Ways 코틀린

dp문제인데 점화식을 x(n-2)+x(n-1)=x(n) 으로잡아야할듯

2 26   22 6  2 2 6 



정답

class Solution {

    fun numDecodings(s: String): Int {
        val n = s.length
        val dp = IntArray(n+1){0}
        dp[0] = 1
        for(i in 1..n) {
            val ch = s[i-1]
            if(ch == '0') dp[i] = 0
            val prevCh = if(i > 1) s[i-2] else '0'
            if(ch != '0') dp[i] += dp[i-1]
            if(prevCh != '0' && prevCh <= '1' || prevCh == '2' && ch <= '6') dp[i] += dp[i-2]
        }
        return dp[n]
    }
}