Skip to content

Commit 28137fd

Browse files
committed
decode ways solution
1 parent f3f75a1 commit 28137fd

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

โ€Ždecode-ways/Yn3-3xh.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/**
2+
[๋ฌธ์ œํ’€์ด]
3+
- ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ง€์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ตฌํ•˜๊ธฐ
4+
- A ~ Z -> 1 ~ 26
5+
- DP๋กœ ํ’€์–ด๋ณด์ž.
6+
time: O(N), space: O(N)
7+
1212๋ฅผ ์˜ˆ์‹œ๋กœ,
8+
์ฒซ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ dp[1] = 1
9+
๋งŒ๋“ค์–ด์ง€๋Š” ์ˆ˜: 1
10+
11+
ํ•œ์ž๋ฆฌ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ dp[2] = dp[1] = 1
12+
๋งŒ๋“ค์–ด์ง€๋Š” ์ˆ˜: 1, 2
13+
๋‘์ž๋ฆฌ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ dp[2] = d[2] + dp[0] = 1 + 1 = 2
14+
๋งŒ๋“ค์–ด์ง€๋Š” ์ˆ˜: 12
15+
>> 1, 2 | 12
16+
17+
ํ•œ์ž๋ฆฌ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ dp[3] = dp[2] = 2
18+
๋งŒ๋“ค์–ด์ง€๋Š” ์ˆ˜: 1, 2, 1 | 12, 1
19+
๋‘์ž๋ฆฌ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ dp[3] = dp[3] + dp[1] = 2 + 1 = 3
20+
๋งŒ๋“ค์–ด์ง€๋Š” ์ˆ˜: 1, 21
21+
>> 1, 2, 1 | 12, 1 | 1, 21
22+
23+
ํ•œ์ž๋ฆฌ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ dp[4] = dp[3] = 3
24+
๋งŒ๋“ค์–ด์ง€๋Š” ์ˆ˜: 1, 2, 1, 2 | 12, 1, 2 | 1, 21, 2
25+
๋‘์ž๋ฆฌ ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ dp[4] = dp[4] + dp[2] = 3 + 2 = 5
26+
๋งŒ๋“ค์–ด์ง€๋Š” ์ˆ˜: 1, 2, 12 | 12, 2
27+
>> 1, 2, 1, 2 | 12, 1, 2 | 1, 21, 2 | 1, 2, 12 | 12, 2
28+
29+
[ํšŒ๊ณ ]
30+
dfs๋กœ ํ’€๋ ค๋‹ค๊ฐ€ ์ž˜ ์•ˆํ’€์–ด์ ธ์„œ DP๋กœ ๋…ธ์„ ์„ ํ‹€์—ˆ๋Š”๋ฐ, ์•„์ง DP ๊ตฌํ˜„์ด ๋ชจ์ž๋ฅธ ๊ฒƒ ๊ฐ™๋‹ค..
31+
32+
*/
33+
class Solution {
34+
public int numDecodings(String s) {
35+
if (s.charAt(0) == '0') {
36+
return 0;
37+
}
38+
39+
int len = s.length();
40+
int[] dp = new int[len + 1];
41+
dp[0] = 1;
42+
dp[1] = 1;
43+
44+
for (int i = 2; i <= len; i++) {
45+
int one = Character.getNumericValue(s.charAt(i - 1));
46+
int two = Integer.parseInt(s.substring(i - 2, i));
47+
48+
if (1 <= one && one <= 9) {
49+
dp[i] = dp[i - 1];
50+
}
51+
if (10 <= two && two <= 26) {
52+
dp[i] += dp[i - 2];
53+
}
54+
}
55+
return dp[len];
56+
}
57+
}
58+

0 commit comments

Comments
ย (0)