[Py_Lv2] 피보나치 수

Sunghun📈·2021년 11월 9일
0

프로그래머스

목록 보기
87/93
post-thumbnail

- 문제 설명

피보나치 수는 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은 2 이상 100,000 이하인 자연수입니다.

- 입출력 예

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

- 접근법

피보나치 수열 f(t) = f(t-1) + f(t-2)를
코드로 구현하면 문제를 해결할 수 있다.

워낙 다양한 방법이 존제하는 만큼 본인이 표현하기 쉬운 방법으로
해결하는게 좋은 것 같다.

문제에서 입력되는 숫자가 2이상으로 되어 있기 때문에
파이썬의 인덱스 시작 값인 0을 생각할 필요 없이
첫번째와 두번째 인데스 값을 변수로 선언해 1로 채워넣고 시작하였다.

이후에는 for문을 돌려 피보나치를 구현하였다.

문제에서 1234567로 나눈 값을 제출하라고 되어있는데
이는 질문 게시판에 잘 정리된 글을 읽고 이해할 수 있었다.

문제에서 주어지는 수가 크면 int형에 담을 수 있는 숫자의 크기를
벗어 날 수 있기 때문에 1234567로 나눈 나머지의 제출을 원한것이었다.

1234567로 나눌 경우 무조건 1234567보다 작은 값이 나오기 때문에
가능하다고 한다.

이에 대해서는 별도로 공부가 필요할것 같다.


def solution(n):
    first, end = 1,1
    
    for i in range(1,n):
        first, end = end, first+end
        
    return first % 1234567
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글