반응형
n = int(input())
dp = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
# 두 자리 수일 땐 10 9 8 7 6 5 4 3 2 1 더했음
# 세 자리 수일 땐 55 45 36 28 21 15 10 6 3 1
# 네 자리 수일 땐 220 ...
# 패턴이 있다. 기존 dp[i-1]을 빼주면 된다.
newdp = [0 for i in range(10)]
for i in range(3, n+1):
for j in range(10):
if j == 0:
newdp[j] = sum(dp)
else:
newdp[j] = newdp[j-1] - dp[j-1]
dp = newdp[:]
# 배열의 깊은 복사 주의하기 ^^
if n == 1:
print(10%10007)
else:
print(sum(dp)%10007)
dp는 패턴을 찾아야 한다 ! ! !
그리고 메모리 제한이 있을 땐 재사용하자 -,-
반응형
'취준 > 코딩테스트' 카테고리의 다른 글
백준 11405 (python): 경로 찾기 (0) | 2024.02.27 |
---|---|
백준 1541 (python): 잃어버린 괄호 (0) | 2024.02.03 |
백준 18406 (python): 럭키 스트레이트 (0) | 2024.02.02 |
백준 13305 (python): 주유소 (0) | 2024.01.31 |
백준 2178 (python): 미로 탐색 (1) | 2024.01.30 |