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

문제 설명

 

피보나치 수는 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 이하인 자연수입니다.

 

입/출력


풀이

def solution(n):
    return Fibonachi(n)%1234567

def Fibonachi(num): #피보나치 구현
    li = [0,1] # 초기값 0,1
    for i in range(2,num+1):
        if num <2: 
            break;
        if num >= 2:
            li.append(li[i-1]+li[i-2])
    return li[-1] # 제일 마지막 배열이 피보나치 구현이 완료된 수임

결과


느낀 점

피보나치의 수는 전의 전항과 전항을 더한 게 새로운 항의 값이 되는 것이다. 이과를 나온 나로서는 쉽게 문제를 풀 수 있었다.

피보나치의 수를 아예 모르는 사람들은 문제 풀기가 좀 어려웠을 수도 있을 것 같다. 다른 분의 풀이는 a, b = b, a+b 이런 식으로 해결하셨는데 첫 번째 항을 다음항으로 스왑 해주고 다음 항을 두 항을 더한 값으로 스왑 해주는 방법으로 해결하셨다. 이런 생각을 조금만 하면 나도 할 수 있을 텐데 난 아직 많이 부족한 것 같다. 열심히 해야겠다.

-참고 피보나치의 수 (위키백과,나무위키)

'Algorithm' 카테고리의 다른 글

[BOJ/백준] 2805번 나무자르기  (0) 2020.11.23
[프로그래머스] 프린터  (0) 2020.11.23
[프로그래머스] 최댓값 최솟값  (0) 2020.11.20
[프로그래머스] 다음 큰 숫자  (0) 2020.11.20
[BOJ/백준] 1654번 랜선자르기  (0) 2020.11.20
<