Menu
CoddyTech

Decode Ways

대문자로 이루어진 메시지를 A = 1, B = 2 등 Z = 26까지의 코드로 숫자로 바꾸고, 구분자 없이 코드를 차례로 이어 붙였습니다. 숫자 문자열 s가 주어집니다. 이 문자열을 만들 수 있는 서로 다른 메시지의 수를 반환하세요.

각 문자는 한 자리 숫자 또는 서로 이웃한 두 자리 숫자로 읽으며, 코드는 0으로 시작하지 않습니다. 06은 6이 아니며, 0만으로는 문자를 나타낼 수 없습니다. 읽을 수 있는 방법이 없다면 0을 반환하세요.

함수

numDecodings(s: string) → integer
sstring
디코딩할 숫자 문자열
반환값integer
s로 인코딩되는 문자 메시지의 수

제약 조건

  • 1 ≤ s.length ≤ 100
  • s에는 0부터 9까지의 숫자만 들어 있으며, 0으로 시작할 수도 있습니다.
  • 모든 접두사와 접미사 s의 판독값은 231개보다 적으므로, 답과 계산 과정에서 구하는 모든 개수는 부호 있는 32비트 정수에 들어갑니다.

예제

입력
s = "2611"
출력
4
설명
네 가지 해석은 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK), 26 11 (ZK)입니다. 61은 26보다 크므로 가운데 숫자들은 절대 짝을 이루지 않습니다.

lock icon제출 시 숨은 테스트 +25개

challenge icon

후속 질문

s에 1부터 9까지의 숫자 중 하나를 의미하는 *도 들어갈 수 있다면 어떨까요? O(n) 시간에 해석 가능한 경우의 수를 세고, 그 수를 10^9+7로 나눈 나머지를 반환할 수 있나요?

코드 초기화
def numDecodings(s):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

s = "2611"

기대값

4