문제
프로그래머스 / 피보나치 수
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) 다른 풀이 방법들
- 배열 사용
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]
}