Skip to content

Conversation

@BangDori
Copy link
Member

@BangDori BangDori commented Jan 9, 2025

문제

Type Info
Time Complexity O(N)
Space Complexity O(N)
Algorithm DP
Data Structure Array

Constraints

  • 1 <= s.length <= 100
  • s contains only digits and may contain leading zero(s).

Edge Case

  1. 0으로 시작하는 경우

풀이

아이디어 도출로 순식간에 해결된 문제라 기존 문제들과는 풀이가 다를 수 있습니다..

문제 정의를 한 줄로 해보자면 다음과 같습니다.

  • "주어진 길이의 문자열(숫자)을 알파벳으로 치환하는 방법"

알파벳은 1~26(A ~ Z)까지 치환이 가능하므로 1자리 수 혹은 2자리 수의 알파벳으로 주어진 문자열을 만드는 과정, 즉 #25 문제와 동일하다는 것을 알 수 있습니다.

  • 길이가 n인 숫자 = 길이가 n-1인 숫자를 알파벳으로 만드는 방법 + 길이가 n-2인 숫자를 알파벳으로만드는 방법
  • 즉, dp[n] = dp[n-1] + dp[n-2]

하지만 다음과 같이 숫자를 알파벳으로 치환할 수 없는 경우가 존재합니다.

  • 0인 경우
  • 26보다 큰 경우

로직을 정리해보면 문제 해결 끄읏!

길이가 n인 숫자를 만드는 방법

- 현재 인덱스 n( 자리수) 0 아니라면? 길이가 n-1 숫자로 만들  있음
- 현재 인덱스 n과 n-1( 자리수) 10 이상 26이하라면? 길이가 n-2 숫자로 만들  있음

어려웠던 점

  • 문제를 보고 DP로 풀어야겠다고 생각하기 까지의 과정이 너무 어려웠다.

알게된 점

  • 문제를 보고 다양한 예제를 생각해보면서, 패턴이 있는지 확인해보자.
혼자 만든 예제

// 예제 1
// input: 01123
// output: 0

// 예제 2
// input: 153
// output: 2

// 예제 3
// input: 212
// output: 2

// 예제 4
// input: 1001
// output: 0

// 예제 5
// input: 100005
// output: 0

// 예제 6
// input: 11
// output: 2

@github-actions github-actions bot merged commit cc33a44 into main Jan 17, 2025
2 checks passed
@BangDori BangDori deleted the bangdori/decode-ways branch January 17, 2025 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants