Skip to content

Commit 614c237

Browse files
committed
decode ways
1 parent 99460e3 commit 614c237

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,35 @@ private boolean checkRange(char left, char right) {
4747
return (num >= 10 && num <= 26);
4848
}
4949
}
50+
51+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n) - ๋ฌธ์ž์—ด ๊ธธ์ด n์— ๋น„๋ก€
52+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n) - dp ๋ฐฐ์—ด ์‚ฌ์šฉ
53+
class newSolution {
54+
public int numDecodings(String s) {
55+
int n = s.length();
56+
if (n == 0 || s.charAt(0) == '0') return 0;
57+
58+
int[] dp = new int[n + 1];
59+
dp[0] = 1; // ๋นˆ ๋ฌธ์ž์—ด์€ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•
60+
dp[1] = 1; // ์ฒซ ๋ฌธ์ž๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•
61+
62+
for (int i = 2; i <= n; i++) {
63+
char one = s.charAt(i - 1); // ํ•œ ์ž๋ฆฌ ์ˆซ์ž
64+
char twoPrev = s.charAt(i - 2); // ๋‘ ์ž๋ฆฌ ์ˆซ์ž์˜ ์•ž์ž๋ฆฌ
65+
66+
// 1์นธ ์ด๋™ ๊ฐ€๋Šฅ (0์€ ์ด๋™ ๋ถˆ๊ฐ€)
67+
if (one != '0') {
68+
dp[i] += dp[i - 1];
69+
}
70+
71+
// 2์นธ ์ด๋™ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ (10~26)
72+
int num = (twoPrev - '0') * 10 + (one - '0');
73+
if (num >= 10 && num <= 26) {
74+
dp[i] += dp[i - 2];
75+
}
76+
}
77+
78+
return dp[n];
79+
}
80+
}
81+

0 commit comments

Comments
ย (0)