알고리즘/Python

[백준/Python] 2011 암호코드

_SIHA_ 2022. 1. 23. 18:22

📖  문제 링크

 

https://www.acmicpc.net/problem/2011

 

2011번: 암호코드

나올 수 있는 해석의 가짓수를 구하시오. 정답이 매우 클 수 있으므로, 1000000으로 나눈 나머지를 출력한다. 암호가 잘못되어 암호를 해석할 수 없는 경우에는 0을 출력한다.

www.acmicpc.net

 

👩‍💻  문제풀이

 

DP문제 로드맵의 거의 마지막 문제인데 도저히 규칙도 안 찾아져서...^^ 

이러한 유형의 문제를 익힌다는 생각으로 아래의 블로그를 따라 작성하였다.

https://archive-me-0329.tistory.com/23?category=965963

 

백준 2011 파이썬

https://www.acmicpc.net/problem/2011 2011번: 암호코드 나올 수 있는 해석의 가짓수를 구하시오. 정답이 매우 클 수 있으므로, 1000000으로 나눈 나머지를 출력한다. 암호가 잘못되어 암호를 해석할 수 없는

archive-me-0329.tistory.com

 

2011번 설명 중 가장 자세하고 이해가 쉬웠다. 혹 어려움을 겪고 계신다면 참고하시길! 

 

 

  최종 코드

n = list(map(int, input()))
l = len(n)

if n[0] == 0:
    print(0)
    exit()
else:
    n = [0] + n

    dp = [0] * (l+1)
    dp[0] = 1
    dp[1] = 1

    for i in range(2, l+1):
        if n[i] > 0:
            dp[i] += dp[i-1]
        if (n[i-1]*10 + n[i]) >= 10 and (n[i-1]*10 + n[i]) <= 26:
            dp[i] += dp[i-2]

    print(dp[l] % 1000000)

 

 

(정답률이 대략 19%밖에 안되는걸보니 나만 어려운 건 아니라는 위안을 삼아 본다.^^)