Skip to content

Latest commit

Β 

History

History
44 lines (36 loc) Β· 1.31 KB

dev-jonghoonpark.md

File metadata and controls

44 lines (36 loc) Β· 1.31 KB
class Solution {
    public int numDecodings(String s) {
        int[] dp = new int[s.length()];

        if (s.charAt(0) == '0') {
            return 0;
        }
        dp[0] = 1;

        for (int i = 1; i < s.length(); i++) {
            int oneDigit = Integer.parseInt(String.valueOf(s.charAt(i)));
            if (oneDigit > 0) {
                dp[i] = dp[i - 1];
            }

            int prevDigit = Integer.parseInt(String.valueOf(s.charAt(i - 1)));
            if (prevDigit == 0) {
                continue;
            }

            int twoDigit = prevDigit * 10 + oneDigit;
            if (twoDigit <= 26) {
                if (i > 2) {
                    dp[i] = dp[i] + dp[i - 2];
                } else {
                    dp[i] = dp[i] + 1;
                }
            }
        }

        return dp[s.length() - 1];
    }
}

TC, SC

μ‹œκ°„ λ³΅μž‘λ„λŠ” O(n), 곡간 λ³΅μž‘λ„λŠ” O(n)이닀. μ΄λŸ°μ‹μœΌλ‘œ 졜근 λ°μ΄ν„°λ§Œ μž¬μ‚¬μš© ν•˜λŠ” κ²½μš°μ—λŠ” κ³΅κ°„λ³΅μž‘λ„λ₯Ό O(1) μœΌλ‘œλ„ 쀄일 수 μžˆμ„ 것이닀. 졜근의 데이터가 μ•„λ‹Œ 이전 데이터듀은 더 이상 μ°Έμ‘°λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— ν•„μš”ν•œ κ³΅κ°„λ§Œ λ§Œλ“€μ–΄μ„œ λ³΄κ΄€ν•˜λ©΄ λœλ‹€.