# Algorithm/--- 프로그래머스

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

jiniz.ll 2022. 1. 26. 00:34

문제

  • 2 이상의 n 이 주어졌을 때, n 번째 피보나치 수를 1234567로 나눈 나머지 구하기

Idea

  • 반복문으로 피보나치 수 구하기
  • 한 번 구한 값은 저장하기

Code

Swift

  • 재귀 방식은 시간 초과 및 core dump 에러 뜸
func solution(_ n: Int) -> Int {
    
    var fibonacci = [0, 1]
    for i in 2...n {
        let next = (fibonacci[i-1] + fibonacci[i-2]) % 1234567
        fibonacci.append(next)
    }
    
    return fibonacci[n]
}

 

  • 다른 사람 풀이
  • 배열에 저장하지 않고 하는 법
func solution(_ n: Int) -> Int {
    var n0 = 0, n1 = 1;
    for index in 2...n {
        if index % 2 == 0 {
            n0 = (n0 + n1) % 1234567
        } else {
            n1 = (n1 + n0) % 1234567
        }
    }
    return n % 2 == 0 ? n0 : n1
}