[프로그래머스] LV 2. 피보나치 수

김민철·2020년 11월 28일
0

문제

https://programmers.co.kr/learn/courses/30/lessons/12945

문제 설명
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.

예를들어

F(2) = F(0) + F(1) = 0 + 1 = 1
F(3) = F(1) + F(2) = 1 + 1 = 2
F(4) = F(2) + F(3) = 1 + 2 = 3
F(5) = F(3) + F(4) = 2 + 3 = 5
와 같이 이어집니다.

2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.

제한 사항

  • n은 1이상, 100000이하인 자연수입니다.

입출력 예

입출력 예 설명
피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.


내 풀이

(첫 풀이)

재귀로 풀었는데 테스트 1~6까지는 통과, 테스트 7~14 까지는 시간초과와 런타임 에러가 발생했습니다..

수가 커질수록 재귀로 반복한다는 것은 시간이 많이걸립니다.

for 문으로 다시 풀어봐야겠습니다.

(두번째)

for 문으로 풀어 모두 테스트케이스를 모두 통과했습니다.
재귀가 못 통과하고 바로 for 문으로 풀어야겠다고 생각했습니다.

재귀를 쓴 첫 풀이가 깔끔하지만 n이 커질수록 중복 계산해야 할 양이 많아집니다. 하지만 for 문을 쓰면 중복 계산 없이 답을 구할 수 있습니다.


다른사람들 풀이

2개의 코드 모두 for 문을 이용한 풀이입니다.
제가 변수 3개를 선언했던거와 달리 변수 2개만 쓰거나, 리스트를 활용해 변수를 하나만 사용한 풀이들 입니다.

특히나 리스트를 사용한 풀이에 감탄했습니다.

0개의 댓글