Skip to content

Commit 0c9bc0c

Browse files
author
sap
committed
decode-ways solution
1 parent 1654fd9 commit 0c9bc0c

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

โ€Ždecode-ways/seona926.jsโ€Ž

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
let numDecodings = function (s) {
6+
// ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž๊ฐ€ decode๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ง“์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๊ธฐ
7+
const n = s.length;
8+
if (n === 0) return 0;
9+
10+
// dp[i]๋Š” s[0...i-1]๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์ด ํ•ด์„๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ €์žฅ
11+
const dp = new Array(n + 1).fill(0);
12+
13+
// ๋นˆ ๋ฌธ์ž์—ด์€ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ์Œ (์•„๋ฌด๊ฒƒ๋„ ์„ ํƒํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•)
14+
dp[0] = 1;
15+
16+
// ์ฒซ ๊ธ€์ž๊ฐ€ '0'์ด ์•„๋‹ˆ๋ผ๋ฉด, ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ์Œ
17+
dp[1] = s[0] === "0" ? 0 : 1;
18+
19+
for (let i = 2; i <= n; i++) {
20+
const oneDigit = parseInt(s.slice(i - 1, i)); // ๋งˆ์ง€๋ง‰ ํ•œ ๊ธ€์ž
21+
const twoDigits = parseInt(s.slice(i - 2, i)); // ๋งˆ์ง€๋ง‰ ๋‘ ๊ธ€์ž
22+
23+
// ํ•œ ๊ธ€์ž๊ฐ€ ์œ ํšจํ•˜๋‹ค๋ฉด, ๊ทธ ๊ธ€์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€
24+
if (oneDigit >= 1 && oneDigit <= 9) {
25+
dp[i] += dp[i - 1];
26+
}
27+
28+
// ๋‘ ๊ธ€์ž๊ฐ€ ์œ ํšจํ•˜๋‹ค๋ฉด, ๊ทธ ๋‘ ๊ธ€์ž๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€
29+
if (twoDigits >= 10 && twoDigits <= 26) {
30+
dp[i] += dp[i - 2];
31+
}
32+
}
33+
34+
return dp[n];
35+
};
36+
37+
/*
38+
1. ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
39+
- ๋ฐ˜๋ณต๋ฌธ์˜ ์‹œ๊ฐ„๋ณต์žก๋„
40+
2. ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
41+
- dp ๋ฐฐ์—ด์˜ ๊ณต๊ฐ„ ๋ณต์žก๋„
42+
*/

0 commit comments

Comments
ย (0)