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보다 크므로 가운데 숫자들은 절대로 짝을 이루지 않습니다.
challenge icon

후속 질문

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

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

테스트 #1

테스트 #2

테스트 #3

인자

s = "2611"

예상 출력

4