[파이썬] 백준 2011 : 암호코드 (골드5)
풀이
방향성 생각
- 바텀업으로 state 나눠서 전 노드/전전 노드에서 들어오는 방식으로 풀기
- 탑다운으로 조건에 맞는 경우에만 탐색 진행하기
전체코드
import sys
sys.setrecursionlimit(10**6)
string = input()
L = len(string)
dp = [-1]*L
MOD = 1000000
def dfs(x):
if x == L:
return 1
if dp[x] != -1:
return dp[x]
result = 0
if string[x] != '0':
result += dfs(x+1)
if x+1 < len(string) and '10' <= string[x:x+2] <= '26':
result += dfs(x+2)
dp[x] = result%MOD
return dp[x]
print(dfs(0))
코멘트
- .탑다운 : 종료조건 + 메모제이션 + 탐색조건 + DP 업데이트
'Algorithm > Dynamic Programming' 카테고리의 다른 글
[파이썬, 자바] 백준 12865 : 평범한 배낭 (골드5) (0) | 2025.02.09 |
---|---|
[파이썬, 자바] 백준 2240 : 자두나무 (골드5) (0) | 2025.02.09 |
[파이썬] 백준 15486 : 퇴사2 (골드5) (0) | 2024.12.30 |
[파이썬] 백준 11054 : 가장 긴 바이토닉 부분 수열 (골드4) (0) | 2024.12.26 |
[파이썬] 백준 5557 : 1학년 (골드5) (0) | 2024.12.25 |
[파이썬] 백준 10251 : 운전 면허 시험 (플레5) (0) | 2024.11.19 |
[파이썬] 백준 1660 : 캡틴 이다솜 (골드5) (0) | 2024.11.15 |
댓글