algorithm/Dynamic Programming

[C++] BOJ 13301 타일 장식물

gartenhh 2021. 5. 1. 13:16

문제

백준 13301번 타일장식물

www.acmicpc.net/problem/13301

 

13301번: 타일 장식물

대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개

www.acmicpc.net

코드

#include<iostream>
using namespace std;

long long pibo[85];
int N;

int main() {
	pibo[1] = 1;
	pibo[2] = 1;
	cin >> N;

	for (int i = 3; i <= N; i++) {
		pibo[i] = pibo[i - 1] + pibo[i - 2];
	}

	cout << pibo[N] * 4 + pibo[N - 1] * 2;
}

풀이방법

각 타일의 한 변의 길이는 피보나치수열을 이루고, 직사각형의 둘레는 (n번째 타일의 한 변의 길이)*4 + (n-1번째 타일의 한 변의 길이)*2와 같다. 따라서 DP를 이용해 한 변의 길이를 순서대로 구하고, 그것을 기반으로 직사각형의 둘레를 출력해준다.

고민과정

long long을 쓰라고 나와있는데도 놓쳐서 int라고 했다가 틀렸다.