백준 11057번(파이썬):오르막 수

백준 11057번 문제 정리글 입니다.

문제 출처-https://www.acmicpc.net/problem/11057

문제 내용

백준 1309번

나의 풀이

    N=int(input())
    dp=[[0]*10 for _ in range(N+1)]
    dp[1]=[1]*10

    for i in range(2,N+1):
        dp[i][0]=sum(dp[i-1])
        for j in range(1,10):
            dp[i][j]=dp[i][j-1]-dp[i-1][j-1]

    print((sum(dp[N])%10007))
  1. 이차원 배열을 만들어 해당길이일 때 0~9까지의 열들을 이용하여 계단수를 구하도록 구현했다.
  2. 그 후, 각 열별로 수가 하나씩 증가하기 때문에 그 전 열의 값에서 이전 행의 값을 빼서 현재의 값에 대입해줬다.

처음에 틀렸습니다가 나왔다… 그래서 다시 봐보니 뺴줬어야 했는데 더하기로 해버렸다…

다른 풀이

   # 11057
    n = int(input())
    dp = [1]*10
    for i in range(1,n) :
        for j in range(1,10) :
            dp[j] += dp[j-1]

    print(sum(dp)%10007)

나의 풀이처럼 시작 숫자를 기준으로 하지않고 끝나는 숫자를 기준으로 했다. 그리고 이차원 배열로 하지 않고 값을 단순히 더해가는식으로 해결할 수 있다.

코드를 구현하고 한번 더 읽어 보는게 좋을것 같다…

참조 링크