<Medium> Decode Ways (LeetCode : C#)

이도희·2023년 5월 27일
0

알고리즘 문제 풀이

목록 보기
90/185

https://leetcode.com/problems/decode-ways/

📕 문제 설명

숫자로 이루어진 문자열이 주어질 때 decode 가능한 방법의 수 반환하기

기본적으로 문자는 다음과 같이 인코딩 된다.

A -> 1
B -> 2
.
.
Z -> 26

숫자로 이루어진 문자열들을 어떻게 쪼개서 decode하느냐에 따라 다양한 조합이 나온다!

  • Input
    숫자로 이루어진 문자열 (string)
  • Output
    decode 가능한 방법의 수 (int)

예제

풀이

맨 마지막을 1로 초기화 하고, 앞으로 가면서 1자리수가 가능하다면 뒤에거 그대로 가져온 상태에서 2자리수도 가능하면 2개 뒤로 나오는 것도 더해주기

public class Solution {
    public int NumDecodings(string s) {
        var dp = new int[s.Length+1];
        dp[s.Length] = 1;

        for (int i = s.Length-1; i >= 0; i--)
        {
            if (s[i] == '0') 
            {
                dp[i] = 0;
            }
            else
            {
                dp[i] = dp[i + 1];
            }

            if (i + 1 < s.Length && (s[i] == '1' || s[i] == '2' && s[i + 1] <= '6')) // 2자리수 가능한 경우
            {
                dp[i] += dp[i + 2];
            }
        }
        return dp[0];
    }
}

결과

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글