File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
1
+ // ์์ ํ์์ ํตํด ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ๋
ธ๋ ฅํ์์ง๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
2
+ // dfs๋ฅผ ํตํด ํ์ดํ๋ ค๊ณ ํ์ง๋ง O(2^N)์ ์๊ฐ๋ณต์ก๋๋ก ์ธํด ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
3
+ // ์ดํ dp๋ก ํ์ด๋ฅผ ์์ํ์๊ณ ์ด๋ ต์ง ์๊ฒ ํ์ดํ์์ต๋๋ค.
4
+ // dp[i] = dp[i-1] + dp[i-2]๋ก ํ์ดํ์์ต๋๋ค.
5
+ // ์ด๋ i๋ฒ์งธ ๋ฌธ์์ด์ 1์๋ฆฌ๋ก ์ทจ๊ธํ ์ง 2์๋ฆฌ๋ก ์ทจ๊ธํ ์ง์ ๋ฐ๋ผ ๊ฒฝ์ฐ์ ์๊ฐ ๋ฌ๋ผ์ง๋๋ค.
6
+ // 1์๋ฆฌ๋ก ์ทจ๊ธํ ๊ฒฝ์ฐ 1~9๊น์ง ๊ฐ๋ฅํ๊ณ
7
+ // 2์๋ฆฌ๋ก ์ทจ๊ธํ ๊ฒฝ์ฐ 10~26๊น์ง ๊ฐ๋ฅํฉ๋๋ค.
8
+
9
+ // ์๊ฐ๋ณต์ก๋ : O(N)
10
+ // ๊ณต๊ฐ๋ณต์ก๋ : O(N)
11
+ class SolutionGotprgmer {
12
+ public int numDecodings (String s ) {
13
+ // ์์ธ ์ฒ๋ฆฌ: ๋ฌธ์์ด์ด "0"์ผ๋ก ์์ํ๊ฑฐ๋ ๋น ๋ฌธ์์ด์ด๋ฉด
14
+ if (s == null || s .length () == 0 || s .charAt (0 ) == '0' ) {
15
+ return 0 ;
16
+ }
17
+ int [] dp = new int [s .length ()+1 ];
18
+ dp [0 ] = 1 ;
19
+ for (int i =0 ;i <s .length ();i ++){
20
+ int ith = s .charAt (i )-'0' ;
21
+ if (ith != 0 ){
22
+ dp [i +1 ] = dp [i ];
23
+ }
24
+ if (i >0 ){
25
+ String twoDigitStr = s .substring (i -1 ,i +1 );
26
+ int twoDigitNum = Integer .valueOf (twoDigitStr );
27
+ if (twoDigitNum >=10 && twoDigitNum <27 ){
28
+ dp [i +1 ] += dp [i -1 ];
29
+ }
30
+ }
31
+
32
+ }
33
+ return dp [s .length ()];
34
+ }
35
+
36
+
37
+ }
You canโt perform that action at this time.
0 commit comments