728x90
반응형
https://www.acmicpc.net/problem/2011
2011번: 암호코드
나올 수 있는 해석의 가짓수를 구하시오. 정답이 매우 클 수 있으므로, 1000000으로 나눈 나머지를 출력한다. 암호가 잘못되어 암호를 해석할 수 없는 경우에는 0을 출력한다.
www.acmicpc.net
문제 해결
- 각 자리수 숫자를 분석해야한다.
- 알파벳으로 바꿀 때 해석의 가지수에 영향을 주는 것은 바로 앞에 수 하나이다.
- 하나씩 분석해서 이전의 수와 연결해서 10이상 26이하가 나오면 다른 암호로 해석할 여지가 있다.
- DP를 이용할 것이다. DP[i]는 i번째 수까지 봤을 때 해석의 가지수이다.
- 바로 앞에 수와 독립적으로 해석하는 가지수는 dp[i-1]이고 연결해서 해석하는 가지수는 dp[i-2]이다.
CODE
code = [int(c) for c in str(input().rstrip())]
dp = [0 for _ in range(len(code)+1)]
if code[0] ==0:
print(0)
exit()
code = [0] + code
dp[0] = dp[1] = 1
for i in range(2,len(code)):
if code[i] >0:
dp[i] += dp[i-1]
temp = code[i-1]*10 + code[i]
if temp>=10 and temp<=26:
dp[i] += dp[i-2]
print(dp[-1]%1000000)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 1783 병든 나이트 (0) | 2023.03.14 |
---|---|
[python] 백준 1343 폴리오미노 (0) | 2023.03.14 |
[python] 백준 14442 벽 부수고 이동하기 2 (1) | 2023.03.14 |
[python] 백준 1213 팰린드롬 만들기 (0) | 2023.03.13 |
[python] 백준 1965 상자넣기 (0) | 2023.03.12 |
댓글