반응형
피보나치 수 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
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm/Programmers] 다음 큰 숫자 Swift (0) | 2021.01.15 |
---|---|
[Algorithm/Programmers] 가장 큰 정사각형 찾기 Swift (0) | 2021.01.14 |
[Algorithm/Programmers] 프린터 (0) | 2021.01.14 |
[Algorithm/Programmers] 스킬트리 (0) | 2021.01.14 |
[Algorithm/Programmers] 가장 큰 수 (0) | 2020.12.18 |
댓글