File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -47,3 +47,35 @@ private boolean checkRange(char left, char right) {
47
47
return (num >= 10 && num <= 26 );
48
48
}
49
49
}
50
+
51
+ // ์๊ฐ ๋ณต์ก๋: O(n) - ๋ฌธ์์ด ๊ธธ์ด n์ ๋น๋ก
52
+ // ๊ณต๊ฐ ๋ณต์ก๋: O(n) - dp ๋ฐฐ์ด ์ฌ์ฉ
53
+ class newSolution {
54
+ public int numDecodings (String s ) {
55
+ int n = s .length ();
56
+ if (n == 0 || s .charAt (0 ) == '0' ) return 0 ;
57
+
58
+ int [] dp = new int [n + 1 ];
59
+ dp [0 ] = 1 ; // ๋น ๋ฌธ์์ด์ ํ ๊ฐ์ง ๋ฐฉ๋ฒ
60
+ dp [1 ] = 1 ; // ์ฒซ ๋ฌธ์๊ฐ 0์ด ์๋๋ฉด ํ ๊ฐ์ง ๋ฐฉ๋ฒ
61
+
62
+ for (int i = 2 ; i <= n ; i ++) {
63
+ char one = s .charAt (i - 1 ); // ํ ์๋ฆฌ ์ซ์
64
+ char twoPrev = s .charAt (i - 2 ); // ๋ ์๋ฆฌ ์ซ์์ ์์๋ฆฌ
65
+
66
+ // 1์นธ ์ด๋ ๊ฐ๋ฅ (0์ ์ด๋ ๋ถ๊ฐ)
67
+ if (one != '0' ) {
68
+ dp [i ] += dp [i - 1 ];
69
+ }
70
+
71
+ // 2์นธ ์ด๋ ๊ฐ๋ฅํ์ง ํ์ธ (10~26)
72
+ int num = (twoPrev - '0' ) * 10 + (one - '0' );
73
+ if (num >= 10 && num <= 26 ) {
74
+ dp [i ] += dp [i - 2 ];
75
+ }
76
+ }
77
+
78
+ return dp [n ];
79
+ }
80
+ }
81
+
You canโt perform that action at this time.
0 commit comments