(프로그래머스 코딩테스트 고득점 kit) Dynamic Programming Level3 타일 장식물
by 줌코딩
문제
대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개의 나선 모양처럼 점점 큰 타일을 붙인 형태였다. 타일 장식물의 일부를 그리면 다음과 같다.
그림에서 타일에 적힌 수는 각 타일의 한 변의 길이를 나타낸다. 타일 장식물을 구성하는 정사각형 타일 한 변의 길이를 안쪽 타일부터 시작하여 차례로 적으면 다음과 같다. [1, 1, 2, 3, 5, 8, .] 지수는 문득 이러한 타일들로 구성되는 큰 직사각형의 둘레가 궁금해졌다. 예를 들어, 처음 다섯 개의 타일이 구성하는 직사각형(위에서 빨간색으로 표시한 직사각형)의 둘레는 26이다.
타일의 개수 N이 주어질 때, N개의 타일로 구성된 직사각형의 둘레를 return 하도록 solution 함수를 작성하시오.
제한사항
- N은 1 이상 80 이하인 자연수이다.
어떻게 접근할 것인가?
- 갯수 만큼 반복해서 가장 최근 두수를 찾아준다음에
- 가장 최근 두수를 이용해서 양변을 구하고 *2해준다.
생각대로 코드(복잡도 : n, 정답율: 100점)
#include <string>
#include <vector>
using namespace std;
long long solution(int N) {
int num1 = 1, num2 = 1;
for(int i = 2; i <= N; i++){
int temp = num1 + num2;
num2 = num1;
num1 = temp;
}
return 2*(num1+num2);
}
느낀점
- 띠용..?ㅋㅋㅋ
- 너무 짧고 간단하게 끝나버렸다 ㅋㅋㅋㅋ
- 일단 만족. 싱겁. 레벨3인데 뭔가 싱겁다 ㅎㅎ
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS