알고리즘

[백준, 11727번] 2×n 타일링 2

hminor 2023. 8. 3. 10:39

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