본문 바로가기

algorithm/Dynamic Programming

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

문제

백준 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라고 했다가 틀렸다.

'algorithm > Dynamic Programming' 카테고리의 다른 글

[C++] BOJ 11048 이동하기  (0) 2021.08.07
[C++] BOJ 1010 다리 놓기  (0) 2021.05.01
[C++] BOJ 9625 RIJEČI (BABBA)  (0) 2021.05.01
[C++] BOJ 10870 피보나치 수 5  (0) 2021.05.01
[C++] BOJ 2748  (0) 2021.03.27