Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- tanstack query
- 멀티캠퍼스IT부트캠프티
- LG유플러스 유레카 부트캠프
- git branch 협업
- 정렬
- LG유플러스 유레카 프론트엔드 개발자
- 부트캠프후기
- 브루트포스
- 프로세스
- 자바
- 멀티캠퍼스IT부트캠프
- 시간 복잡도
- LG유플러스 유레카 3기 프론트엔드
- 2775번 문제
- 웹시큐리티
- 소수
- 알고리즘
- Java
- 별찍기10
- 애자일
- 스레드
- LG유플러스 유레카 프론트엔드
- 프론트엔드
- zod
- 코딩
- 유레카 부트캠프
- 재귀
- Do it! 자료구조와 함께 배우는 알고리즘 입문
- 프론트엔드 비대면반
- 백준
Archives
- Today
- Total
개발 일기
백준 10870번 문제풀이 - 피보나치 함수 본문

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
이번 문제는 피보나치 함수를 재귀를 사용하여 풀어보는 문제이다.
피보나치 수는 𝐹𝑛 = 𝐹𝑛-1 + 𝐹𝑛-2 (n ≥ 2)로 정의된다.
0번 째 수는 0, 1번 째 수는 1로 정의됐기 때문에 메서드를 만들 때 f(0)은 0, f(1)은 1로 리턴하도록 하고
재귀하며 반복적으로 덧셈을 수행하도록 했다.
코딩
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Fibonacci {
// 피보나치 함수
static int fibo(int f) {
if (f > 1) {
return fibo(f-1) + fibo(f-2); // 피보나치 알고리즘
} else if (f == 1) { // 1일 때 1
return 1;
} else { // 0일 때 0
return 0;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
System.out.println(fibo(n));
}
}
결과

느낀 점
간단한 문제라서 푸는데 얼마 걸리지 않고 복잡하지 않았지만 하노이의 탑이나 8퀸 문제와 같은 고난이도로 올라가면 복잡해져서 재귀문에 대해 좀 더 익숙해지고 깊이있게 이해할 필요가 있을 것 같다.
'백준 문제풀이' 카테고리의 다른 글
| 백준 1018번 문제풀이 - 체스판 다시 칠하기 (0) | 2021.11.29 |
|---|---|
| 백준 2798번 문제풀이 - 블랙잭 (0) | 2021.11.29 |
| 백준 10872번 문제풀이 - 팩토리얼 (0) | 2021.11.27 |
| 백준 1002번 문제풀이 - 터렛 (0) | 2021.11.24 |
| 백준 3053번 문제풀이 - 택시 기하학 (0) | 2021.11.23 |
Comments