Algorithm / 피보나치 수

알고리즘 코드카타

목록 보기
31/59

문제

프로그래머스 / 피보나치 수

1) 문제 풀이

func solution(_ n:Int) -> Int {
    if n == 0 { return 0 }
    if n == 1 { return 1 }
    
    var a = 0
    var b = 1
    let mod = 1234567
    
    for _ in 2...n {
        let next = (a + b) % mod
        a = b
        b = next
    }
    
    return b
}

결과

2) 다른 풀이 방법들

  1. 배열 사용
func solution(_ n:Int) -> Int {
    var nums = [0, 1]
    
    for i in 1..<n {
        nums.append((nums[i] + nums[i-1]) % 1234567)
    }
    
    return nums[n]
}
func solution(_ n:Int) -> Int {
    let mod = 1234567
    if n == 0 { return 0 }
    if n == 1 { return 1 }

    var dp = [Int](repeating: 0, count: n + 1)
    dp[0] = 0
    dp[1] = 1

    for i in 2...n {
        dp[i] = (dp[i - 1] + dp[i - 2]) % mod
    }

    return dp[n]
}
profile
이유있는 코드를 쓰자!!

0개의 댓글