초보개발자

[11726] 2xn 타일링 본문

카테고리 없음

[11726] 2xn 타일링

___yejin 2017. 7. 19. 17:41
  • 입력: 가로 길이 n(1,000 이하의 자연수)
  • 출력: 2xn을 2x1 타일들로 표현할 수 있는 경우의 수를 10,007로 나눈 것
  • 알고리즘: 동적계획법, 피보나치 수열
  • 소스코드
    이 문제는 피보나치 수열로 풀 수 있다.
    n = 1 일 때 세로 막대로 표현하는 경우 한 가지
    n = 2 일 때 세로 막대 두 개로 표현하거나 가로 막대 두 개로 표현할 수 있어 두 가지
    n = 3 일 때 n = 1에 n = 2를 붙이는 방법과 n = 2에 n = 1를 붙이는 방법 총 세 가지
    n = 4 일 때 n = 2에 n = 2를 붙이는 방법과 n = 3에 n = 1를 붙이는 방법 총 다섯 가지
    이런 식으로 가로 길이가 n일 때, (n - 2)에 세로 막대x2와 가로 막대x2를 붙여 표현할 수 있고, (n - 1)에 세로 막대를 하나를 붙여 표현할 수 있다. 즉 An = An-1+An-2인 피보나치 수열이다. 


Comments