백준 11057번(파이썬):오르막 수
백준 11057번 문제 정리글 입니다.
문제 출처-https://www.acmicpc.net/problem/11057
문제 내용
나의 풀이
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))
- 이차원 배열을 만들어 해당길이일 때 0~9까지의 열들을 이용하여 계단수를 구하도록 구현했다.
- 그 후, 각 열별로 수가 하나씩 증가하기 때문에 그 전 열의 값에서 이전 행의 값을 빼서 현재의 값에 대입해줬다.
처음에 틀렸습니다
가 나왔다… 그래서 다시 봐보니 뺴줬어야 했는데 더하기로 해버렸다…
다른 풀이
# 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)
나의 풀이처럼 시작 숫자를 기준으로 하지않고 끝나는 숫자를 기준으로 했다. 그리고 이차원 배열로 하지 않고 값을 단순히 더해가는식으로 해결할 수 있다.
코드를 구현하고 한번 더 읽어 보는게 좋을것 같다…