Skip to content

Commit

Permalink
add solution: Decode Ways
Browse files Browse the repository at this point in the history
  • Loading branch information
GotPrgmer committed Jan 1, 2025
1 parent 03ded85 commit 2c8b5df
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions decode-ways/Gotprgmer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// ์™„์ „ํƒ์ƒ‰์„ ํ†ตํ•ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜์˜€์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
// dfs๋ฅผ ํ†ตํ•ด ํ’€์ดํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ O(2^N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ์ธํ•ด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
// ์ดํ›„ dp๋กœ ํ’€์ด๋ฅผ ์‹œ์ž‘ํ•˜์˜€๊ณ  ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€์ดํ•˜์˜€์Šต๋‹ˆ๋‹ค.
// dp[i] = dp[i-1] + dp[i-2]๋กœ ํ’€์ดํ•˜์˜€์Šต๋‹ˆ๋‹ค.
// ์ด๋•Œ i๋ฒˆ์งธ ๋ฌธ์ž์—ด์„ 1์ž๋ฆฌ๋กœ ์ทจ๊ธ‰ํ• ์ง€ 2์ž๋ฆฌ๋กœ ์ทจ๊ธ‰ํ• ์ง€์— ๋”ฐ๋ผ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
// 1์ž๋ฆฌ๋กœ ์ทจ๊ธ‰ํ•  ๊ฒฝ์šฐ 1~9๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๊ณ 
// 2์ž๋ฆฌ๋กœ ์ทจ๊ธ‰ํ•  ๊ฒฝ์šฐ 10~26๊นŒ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

// ์‹œ๊ฐ„๋ณต์žก๋„ : O(N)
// ๊ณต๊ฐ„๋ณต์žก๋„ : O(N)
class SolutionGotprgmer {
public int numDecodings(String s) {
// ์˜ˆ์™ธ ์ฒ˜๋ฆฌ: ๋ฌธ์ž์—ด์ด "0"์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด์ด๋ฉด
if (s == null || s.length() == 0 || s.charAt(0) == '0') {
return 0;
}
int[] dp = new int[s.length()+1];
dp[0] = 1;
for(int i=0;i<s.length();i++){
int ith = s.charAt(i)-'0';
if(ith != 0){
dp[i+1] = dp[i];
}
if(i>0){
String twoDigitStr = s.substring(i-1,i+1);
int twoDigitNum = Integer.valueOf(twoDigitStr);
if(twoDigitNum>=10 && twoDigitNum <27){
dp[i+1] += dp[i-1];
}
}

}
return dp[s.length()];
}


}

0 comments on commit 2c8b5df

Please sign in to comment.