File tree Expand file tree Collapse file tree 1 file changed +35
-0
lines changed
Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * μ«μ λ¬Έμμ΄μ΄ μ£Όμ΄μ‘μ λ, μ΄λ₯Ό μνλ²³μΌλ‘ ν΄λ
ν μ μλ λ°©λ²μ μλ₯Ό ꡬνκΈ°
3+ *
4+ * λ€μ΄λλ―Ή νλ‘κ·Έλλ°(DP)
5+ * (1)κ° μμΉμμ μμνμ¬ λ¬Έμμ΄μ ν΄λ
νλ λ°©λ²μ μλ₯Ό κ³μ°
6+ * (2)μ€λ³΅ κ³μ°μ νΌνκΈ° μν΄ DPλ₯Ό μ¬μ©
7+ */
8+
9+ /**
10+ * @param {string } s
11+ * @return {number }
12+ */
13+ var numDecodings = function ( s ) {
14+ if ( s . length === 0 || s [ 0 ] === '0' ) return 0 ;
15+
16+ const dp = new Array ( s . length + 1 ) . fill ( 0 ) ;
17+
18+ dp [ 0 ] = 1 ;
19+ dp [ 1 ] = s [ 0 ] !== '0' ? 1 : 0 ;
20+
21+ for ( let i = 2 ; i <= s . length ; i ++ ) {
22+ // ν μ리 μ«μλ‘ ν΄λ
νλ κ²½μ° (νμ¬ μ«μκ° 1-9)
23+ if ( s [ i - 1 ] !== '0' ) {
24+ dp [ i ] += dp [ i - 1 ] ;
25+ }
26+
27+ // λ μ리 μ«μλ‘ ν΄λ
νλ κ²½μ° (10-26)
28+ const twoDigit = parseInt ( s . substring ( i - 2 , i ) ) ;
29+ if ( twoDigit >= 10 && twoDigit <= 26 ) {
30+ dp [ i ] += dp [ i - 2 ] ;
31+ }
32+ }
33+
34+ return dp [ s . length ] ;
35+ } ;
You canβt perform that action at this time.
0 commit comments