Algorithm/Problems
99클럽 코테 스터디 15일차 TIL + DP
공부좀하시졍
2025. 4. 18. 15:25
https://www.acmicpc.net/problem/17271
import sys
input = sys.stdin.readline
mod = 1000000007
n, m = map(int, input().split())
dp = [1] * (n+1)
for i in range(m, n+1):
dp[i] = (dp[i-1] + dp[i-m]) % mod
print(dp[n])
- A스킬 시전시간은 1초, B스킬 시전시간은 m초 이기 때문에 n이 m보다 작을 때에는 무조건 A스킬만 사용할 수 있다.
- m초 이하일 때에는 A스킬만 사용하기 때문에 경우의 수는 1 이다. (dp[i] = dp[i-1] = 1)
- m초 이상일 때에는 A스킬과 B스킬을 함께 사용할 수 있다.
- t초 일 때
- t-1초까지 스킬 쓴 상태에서 A스킬 사용 가능
- t-m초까지 스킬 쓴 상태에서 B스킬 사용 가능
- dp[t] = dp[t-1] + dp[t-m]
- t초 일 때
- 점화식 생각하기가 어려우면 n=1 부터 경우의 수를 써내려가며 생각해봐야 한다....