Skip to content

Commit 2c8b5df

Browse files
committed
add solution: Decode Ways
1 parent 03ded85 commit 2c8b5df

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

โ€Ždecode-ways/Gotprgmer.javaโ€Ž

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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+
}

0 commit comments

Comments
ย (0)