Skip to content

Commit 6bedce1

Browse files
feat: decode-ways풀이
1 parent df41078 commit 6bedce1

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
var numDecodings = function(s) {
2+
if (s[0] === '0') return 0;
3+
4+
const n = s.length;
5+
const dp = new Array(n + 1).fill(0);
6+
dp[0] = 1; // 빈 λ¬Έμžμ—΄. κ³„λ‹¨μ˜ 첫 μ‹œμž‘λΆ€λΆ„μ— 1을 λ„£μ–΄μ£ΌλŠ” 것 처럼
7+
dp[1] = 1; // 첫 κΈ€μžκ°€ 0이 μ•„λ‹˜μ€ μœ„μ—μ„œ 확인
8+
//μœ„ 두 값이 기반이 λ˜μ–΄ 각 μžλ¦¬μ— λŒ€ν•œ
9+
10+
for (let i = 2; i <= n; i++) {
11+
const one = Number(s.slice(i - 1, i)); // ν•œ κΈ€μž
12+
const two = Number(s.slice(i - 2, i)); // 두 κΈ€μž
13+
14+
if (one >= 1 && one <= 9) {
15+
dp[i] += dp[i - 1];
16+
}
17+
if (two >= 10 && two <= 26) { //λ‘μžλ¦¬μˆ˜ 일 λ•ŒλŠ” dp[i-2]도 더해쀀닀.
18+
dp[i] += dp[i - 2];
19+
}
20+
// 각 자리의 κ°’(dp[i])은, 1κΈ€μž λ””μ½”λ”© μ‹œ λ°”λ‘œ μ „ 자리(dp[i-1])의 κ°’κ³Ό, 2κΈ€μž λ””μ½”λ”© μ‹œ 두 자리 μ „(dp[i-2])의 값을 λ”ν•΄μ„œ λ§Œλ“ λ‹€. dp[i]λŠ” λ„μ°©μ§€μ˜ κ°œλ…κ°™μ€ 것
21+
22+
}
23+
24+
return dp[n];
25+
};
26+
27+
//μ‹œκ°„ λ³΅μž‘λ„: O(n)
28+
//곡간 λ³΅μž‘λ„: O(n)

0 commit comments

Comments
Β (0)