반응형
문제
https://www.acmicpc.net/problem/10870
풀이
피보나치 수는 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로 푼다면 시간복잡도를 더 효율적이게 풀 수 있겠지만, 재귀함수를 연습하는 차원에서 재귀함수로 풀어보았습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 24060 알고리즘 수업 - 병합 정렬 1 (Swift) (0) | 2023.03.14 |
---|---|
[BOJ] 백준 25501 재귀의 귀재 (Swift) (0) | 2023.03.14 |
[BOJ] 백준 10872 팩토리얼 (Swift) (0) | 2023.03.14 |
[BOJ] 백준 11478 서로 다른 부분 문자열의 개수 (Swift) (0) | 2023.03.14 |
[BOJ] 백준 1269 대칭 차집합 (Swift) (0) | 2023.03.14 |