Skip to content

Commit 776f689

Browse files
committed
feat: Add Solution to Decode Ways #268
1 parent 6289a27 commit 776f689

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

โ€Ždecode-ways/river20s.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution(object):
2+
def numDecodings(self, s):
3+
"""
4+
์‹ค์ œ๋กœ ์–ด๋–ค ๋ฌธ์ž์—ด๋กœ ๋ฐ”๋€Œ๋Š”์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Œ.
5+
์œ ํšจํ•œ ๋””์ฝ”๋”ฉ ๊ฒฝ๋กœ๊ฐ€ ๋ช‡ ๊ฐ€์ง€์ธ๊ฐ€๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.
6+
DP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ž๋ฆฌ์ˆ˜์— ๋Œ€ํ•ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ˆ„์ ํ•˜์—ฌ ๊ณ„์‚ฐ.
7+
DP[i]๋Š” i๋ฒˆ์งธ ์ž๋ฆฌ๊นŒ์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์˜๋ฏธ.
8+
์ ํ™”์‹: DP[i] = DP[i-1] + DP[i-2] (i >= 2)
9+
Time complexity: O(n)
10+
Space complexity: O(n)
11+
"""
12+
# ๋ฌธ์ž์—ด์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ '0'์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๋””์ฝ”๋”ฉ X
13+
if not s or s[0] == '0':
14+
return 0
15+
16+
n = len(s)
17+
dp = [0] * (n + 1)
18+
dp[0] = 1 # DP๋ฅผ ์œ„ํ•œ ๊ธฐ์ดˆ ์ƒํƒœ ์ดˆ๊ธฐํ™”, ์‹ค์ œ๋กœ ๋นˆ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์€ ์•„๋‹˜
19+
dp[1] = 1 # ์ฒซ ๊ธ€์ž ๋””์ฝ”๋”ฉ ๋ฐฉ๋ฒ•์€ 1๊ฐ€์ง€
20+
21+
for i in range(2, n + 1):
22+
# ํ•œ ์ž๋ฆฌ ์ˆ˜ ํ•ด์„ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ
23+
# s[i-2:i]๋Š” i >= 2์ผ๋•Œ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ 2๋ถ€ํ„ฐ ๋ฃจํ”„ ์‹œ์ž‘
24+
if s[i - 1] != '0': # '0'์€ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ œ์™ธ
25+
dp[i] += dp[i - 1] # ์œ ํšจํ•œ '1'~'9'๋ผ๋ฉด ์•ž๊นŒ์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ„์Šน
26+
27+
# ๋‘ ์ž๋ฆฌ ์ˆ˜ ํ•ด์„ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ
28+
if 10 <= int(s[i -2:i]) <= 26:
29+
dp[i] += dp[i - 2] # ์œ ํšจํ•œ '10'~'26'์ด๋ผ๋ฉด ์•ž๊นŒ์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ„์Šน
30+
31+
return dp[n]

0 commit comments

Comments
ย (0)