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