갱스터하우스

[Python] Lv2. 피보나치수 본문

코테 문제/프로그래머스

[Python] Lv2. 피보나치수

승갱 2022. 4. 30. 21:45

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) =

programmers.co.kr

 

 

 

 

 

문제설명

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

 

입출력 예

n return
3 2
5 5

입출력 예 설명

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

 

나의 문제풀이

여태까지 피보나치 단독 문제는 재귀함수를 이용해서 풀어왔지만, 이번 문제에서는 함수 2개를 만들어 풀고 싶지 않았다.

그래서 for문을 이용해서 피보나치 수열을 판별하고, 해당값을 1234567로 나누어 바로 return하였다.

이번 문제풀이에서는 파이썬의 매력이 잘 보여서 좋았다.

def solution(n):
    f1 = 0
    f2 = 1
    for _ in range(n):
        f1 , f2 = f2, f1+f2
    return f1%1234567

'코테 문제 > 프로그래머스' 카테고리의 다른 글

[Python] Lv2.올바른 괄호  (0) 2022.05.03
[Python] Lv2.최댓값과 최솟값  (0) 2022.04.30
[Python] Lv1.최소직사각형  (0) 2022.04.19
[Python] Lv1. [1차] 다트 게임  (0) 2022.04.19
[Python] Lv1.폰켓몬  (0) 2022.04.17