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