File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
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
+ */
You canโt perform that action at this time.
0 commit comments