나의 풀이
n = int(input())
f = [1]*(n+1)
for i in range(2, n+1):
f[i] = f[i-1] + f[i-2]
if n < 2:
print(4)
else:
print(2*(2*f[n-1]+f[n-2]))
고수의 풀이
a=b=1;exec('a,b=b,a+b;'*int(input()));print(b*2)
CODE REVIEW
- 피보나치 수열을 구하고, 길이에 대한 일반항만 구하면 쉽게 해결 가능한 문제였다.
- 고수의 풀이를 보면 길이를 간단하게 피보나치 n항의 2배로 구했는데, 논리를 따져보면…
- (둘레) = $2(2a_{n-1}+a_{n-2})$ = $2(a_{n}+a_{n-1})$ = $2a_{n+1}$
- 따라서 피보나치 수열의 n+1항의 2배가 둘레와 같다.