코딩테스트 & 문제 풀이
[Python]백준_13301 : 타일 장식물
Hicecream
2023. 11. 9. 00:41
2022년 12월 27일에 작성됨
https://www.acmicpc.net/problem/13301
13301번: 타일 장식물
대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개
www.acmicpc.net
문제 분석
직사각형 둘레의 길이의 합은 바로 직전의 정사각형 둘레와 전전의 정사각형 둘레의 합과 같다. 따라서 타일이 1개와 2개인 경우에만 따로 둘레 길이를 4와 6으로 설정해주고 이후부턴 전과 전전의 합으로 둘레의 길이를 구할 수 있다.
소스 코드 (⭕)
n = int(input())
d = [0]*81 # d의 81개의 요소를 전부 0으로 채움
d[0] = 4
d[1] = 6
for i in range(2, n+1):
d[i] = d[i-1]+d[i-2] # 전과 전전 직사각형의 둘레 길이 합
print(d[n-1])
코드 분석
1. 타일의 개수 n을 입력받는다.
2. 둘레의 길이를 담을 리스트 d의 81개의 요소를 전부 0으로 채운다. (81개인 이유는 타일의 개수 n의 최대가 80이기 때문에)
3. d의 인덱스 0과 1인(직사각형 개수가 1개와 2개) 경우는 따로 예외처리를 해줘서 4와 6 값을 직접 넣어준다.
4. 반복문으로 i에 인덱스 2부터 n까지 반복해준다.
5. i번째 타일의 둘레 길이는 i-1번째와 i-2번째 타일의 둘레 길이를 합한 것과 같다.
6. d의 인덱스는 0부터, n은 1부터 시작이므로 d[n-1] 값을 출력한다.
end
규칙을 찾아서 푸는 좋은 문제였다!