문제
대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개의 나선 모양처럼 점점 큰 타일을 붙인 형태였다. 타일 장식물의 일부를 그리면 다음과 같다.
그림에서 타일에 적힌 수는 각 타일의 한 변의 길이를 나타낸다. 타일 장식물을 구성하는 정사각형 타일 한 변의 길이를 안쪽 타일부터 시작하여 차례로 적으면 다음과 같다.
1, 1, 2, 3, 5, 8, ...
지수는 문득 이러한 타일들로 구성되는 큰 직사각형의 둘레가 궁금해졌다. 예를 들어, 처음 다섯개의 타일이 구성하는 직사각형(위에서 빨간색으로 표시한 직사각형)의 둘레는 26이다.
타일의 개수 N(1 ≤ N ≤ 80)이 주어졌을 때, N개의 타일로 구성된 직사각형의 둘레를 구하는 프로그램을 작성하시오.
입력
표준 입력으로 다음 정보가 주어진다. 입력은 한 줄로 구성되며 이 줄에는 타일의 개수를 나타내는 정수 N(1 ≤ N ≤ 80)이 주어진다.
출력
표준 출력으로 N 개의 타일이 구성하는 타일 장식물 직사각형의 둘레를 출력한다.
64비트 정수형인 “long long” 자료형을 써야할 수 있음
서브태스크
번호 | 배점 | 제한 |
1 | 21 | N ≤ 7 |
2 | 53 | N ≤ 40 |
3 | 26 | 원래의 제약조건 이외에 아무 제약조건이 없다(이 경우 64비트 정수형인 “long long” 자료형을 써야할 수 있음). |
[풀이]
N = 1 일 때 가로, 세로 길이는 1, 1
N = 2 일 때 가로, 세로 길이는 1, 2
N = 3 일 때는 2, 3
N = 4 일 때는 3, 5
N = 5 일 때는 5, 8
...
여기서 규칙을 찾아보면
N = x(x >= 2)일 때 긴 변의 길이는 (N = x-1일 때 가로, 세로의 길이의 합)이고
짧은 변의 길이는 (N = x-1일 때 두 변 중 더 긴 변의 길이)이다.
이 부분을 구현하기 위해 두 변수의 값을 서로 변경하는 과정을 넣었다.
그 전 단계의 긴 변의 길이를 다음 단계의 짧은 변이 되도록 했다.
for i in range(N-1):
temp = long_height
long_height = short_height
short_height = temp
long_height = short_height + long_height
그리고, 긴 변의 길이는 그 전 단계의 두 변의 길이의 합을 통해 구현했다.
[최종 코드]
'알고리즘 공부' 카테고리의 다른 글
[백준 1476번] 날짜 계산 python (0) | 2024.08.09 |
---|---|
[백준 14888번] 연산자 끼워넣기 python (0) | 2024.08.09 |
[백준 4659번] 비밀번호 발음하기 python (0) | 2024.08.08 |
[백준 1417번] 국회의원 선거 python (0) | 2024.08.07 |
[백준 13241번] 최소공배수 python (0) | 2024.08.07 |