알고리즘/프로그래머스
프로그래머스 Lv2 피보나치 수 (python)
개발하는 호랑이
2024. 2. 4. 21:35
피보나치 수
풀이
처음엔 재귀함수로 시도해 봤으나, 시간도 오래 걸리고, maximum deepth 에러가 생겨서 실패했다.
그래서 while문을 이용해봤고 아래처럼 진행을 했다.
1. F=[0,1,2] 변수를 생성
2. n = 2일 때는 1을 반환시키고 이게 아니라면, while문에 입장
3. i변수를 이용해서 n과 동일해질때의 값을 반환할 수 있게 제약 걸고, while문 내에서는 F.append() 대신 [0], [1], [2]를 계속해서 바꿔주는 방식으로 이용. 이유 append()도 은근히 시간이 걸리는 녀석임
4. while문을 벗어나면 F[2] 즉, n번째가 되는 값을 1234567로 나눈 나머지를 반환. 이때 n번째는 0번째부터 새는 n번째.
def solution(n):
F = [0, 1, 1]
if n == 2:
return 1
i = 2
while i < n:
i += 1
F[0], F[1] = F[1], F[2]
F[2] = F[0] + F[1]
return F[2] % 1234567
다른 사람 풀이
아.. 더 쉽게 푼 게 있었다. 똑똑한 청년들이 너무 많다.
def fibonacci(num):
a, b = 0, 1
for i in range(num):
a, b = b, a+b
return a