DP를 활용한 누적 값을 이용해 푼 풀이
- 처음에 공식을 찾기 위해 2*4를 진행했을 때는 8개라고 생각해서
- dp[n-2] + dp[n-1] 로 생각해 a,b = b, a+b 라고 생각했는데
- 위의 코드로 진행해보니 n=8의 경우 터무니도 없는 값이 나와 어떻게 해야하나 생각했다가
- 다시 조사해보니 2*4가 11개가 되어 dp[n-2]*2 + dp[n-1]로 진행해보니 원하는 값이 나왔다.
- 여기서 주의할 점은 조건문을 사용하지 않고 출력을 하게 되면 n이 1,2가 나올 경우의 값을 출력하지 못하기에
- 조건 분기를 아래와 같이는 아니더라도 해줘야할듯!
n = int(input())
a, b = 1, 3
if n == 1: print(1)
elif n == 2: print(3)
else:
for _ in range(2, n): a, b = (b)%10007, (a*2+b)%10007
print(b)
'알고리즘' 카테고리의 다른 글
[백준, 10844번] 쉬운 계단 수 (0) | 2023.08.03 |
---|---|
[백준, 2193번] 이친수 (0) | 2023.08.03 |
[백준, 1010번] 다리 놓기 (0) | 2023.08.02 |
[백준, 2156번] 포도주 시식 (0) | 2023.08.02 |
[백준, 9461번] 파도반 수열 (0) | 2023.08.02 |