본문 바로가기
Algorithm/Programmers

[Algorithm/Programmers] 피보나치 수

by thoonk: 2021. 1. 14.

피보나치 수 Level 2

 

문제 풀이:

n이 2보다 크거나 같다는 전제하에 f(n) = f(n-1) + f(n-2) 공식을 이용해서 n번째 피보나치 수를 구하면 된다.

같지 않다면 n을 리턴한다.

 

재귀로 풀면 시간초과가 뜨기 때문에 반복으로 풀어야 한다.

DP를 공부하고 있기 때문에 DP를 적용하고 forEach문을 써보는 습관을 기르고 있다.

 

코드: 

import Foundation

func solution(_ n:Int) -> Int {
    
    return fibo(n)
}

func fibo(_ n: Int) -> Int {
    
    var nums: [Int] = [0, 1]
    guard n >= 2 else { return n }
    
    (2...n).forEach {
        nums.append((nums[$0-1]+nums[$0-2])%1234567)
    }
    
    return nums[n]
}

문제: 

programmers.co.kr/learn/courses/30/lessons/12945?language=swift

 

코딩테스트 연습 - 피보나치 수

피보나치 수는 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

 

댓글