[프로그래머스] 3xn 타일링 (python)
문제 설명 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12902 Idea 풀이 방법이 직관적으로 떠오르지 않아 정의된 문제의 N 값에 따른 답안을 구하며 규칙을 찾아보기로 했습니다. 우선 2x1인 직사각형 타일을 이용하여 3xN인 바닥을 채워야 합니다. 다만, 3xN 바닥의 세로 길이가 3이기 때문에 2x1 직사각형은 반드시 누워져서 들어가는 경우가 발생합니다. 이는 N이 홀수인 경우엔 2x1 직사각형 타일을 이용하여 3xN 바닥을 채울 수 없음을 의미합니다. (아래 그림 참고) 3x3, 3x5인 바닥의 경우 위 이유로 규칙은 N이 짝수인 경우에만 찾도록 하겠습니다. 1. 규칙 찾기 N=0: 0개, 타일을 둘 수 없음 N=2: 3개, 아래 사진 참고 N=4: 11개, (3*3 + 2) - N=2일 때 있었던 3개의 경우에 다시 3가지의 경우의 수들 추가. - N=4일 때 특수한 형태의 모양 생성 (그림 맨 하단 참고) N=6: 41개, (3*11 + 2*3 + 2) - N=4일 때 있었던 경우에 다시 3가지의 경우의 수들 추가. - N=4일 때 있었던 특수한 형태의 모양에 대한 예외 경우의 수 추가 (그림 우측 참고) > 특수한 형태의 모양은 "앞, 뒤"에 따라 다른 경우의 수를 만들 수 있습니다. - N=6일 때 특수한 형태의 모양 생성 (그림 맨 우하단 참고) N=8: 153개, (3*41 + {6*3+2*2} + 2*3 + 2) - N=6일 때 있었던 경우에 다시 3가지의 경우의 수들 추가. - N=6일 때 있었던 특수한 형태의 모양에 대한 예외 경우의 수 추가 (그림 우상단 참고) > 특수한 형태의 모양은 "앞, 뒤"에 따라 다른 경우의 수를 만들 수 있습니다. - N=4일 때 있었던 특수한 형태의 모양에 대한 예외 경우의 수 추가 (그림 우중