반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스(Lv.2) - 피보나치 수 문제를 풀었습니다.
목차
Github
문제 링크
풀이
이번 문제는 피보나치 수를 구하는 문제입니다.
저는 dp처럼 풀어보고자 굳이 배열을 이용해서 풀었습니다.
예시의 F(n) = F(n-1) + F(n-2) 공식을 이용하여 값을 구한 뒤 append 해주고 last를 return 합니다.
1234567을 나눈 나머지를 구하는 이유
이 문제에서는 1234567을 나눈 나머지를 리턴하라고 나와있는데요.
이것은 문제를 한 번 꼰 것이 아니라 Int64에도 담지 못할 정수가 나올 수 있다는 것을 암시합니다.
따라서 마지막에만 나머지 작업을 해주면 안 되고 값을 구할 때마다 나머지 연산을 해주어야 합니다.
백준에서는 자주 보이던 방식인데 프로그래머스에서는 처음 봐서 내심 반가웠네요.
전체 코드
import Foundation
func solution(_ n:Int) -> Int {
var fibo: [Int] = [0, 1]
for i in 2...n {
fibo.append((fibo[i-1] + fibo[i-2]) % 1234567)
}
return fibo.last!
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형