본문 바로가기

PS/백준

[BOJ] 백준 10870 피보나치 수 5 (Swift)

반응형

문제

https://www.acmicpc.net/problem/10870

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

풀이

피보나치 수는 dp, 재귀함수 등으로 구할 수 있습니다.

최대 n이 20이기 때문에 재귀함수로 구현을 해보겠습니다.

먼저 n이 2보다 작다면 n을 리턴해주면 됩니다.
왜냐하면 0번째 수는 0, 1번째 수는 1이기 때문입니다.

n이 2보다 크다면?
피보나치 수를 구하는 함수의 파라미터n - 1(전)과 n - 2(전전)을 더해준 값을 리턴해주면 됩니다.

예를들어 n이 4라면
f(4) = f(3) + f(2)
f(3) = f(2) + f(1)
f(2) = f(1) + f(0) = 2

f(2)가 2라는 것을 알아냈습니다.

f(3) = 2 + 1 = 3
f(4) = 3 + 2 = 5

따라서 f(4) = 5를 리턴해주겠네요.

소스코드

후기

재귀함수을 활용할 줄 안다면 쉽게 풀 수 있습니다.
DP로 푼다면 시간복잡도를 더 효율적이게 풀 수 있겠지만, 재귀함수를 연습하는 차원에서 재귀함수로 풀어보았습니다.

반응형