본문 바로가기
🥇Problem Solving (psS2mj)/BOJ

[BOJ] 10870. 피보나치 수 5 (Java)

by psS2mj 2020. 4. 7.
반응형

문제 링크 / level: Bronze II

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

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는

www.acmicpc.net

 

 

내가 생각한 풀이

이번에는 input의 범위가 굉장히 줄어들었다.

 

문제의 핵심 (출처: BOJ)

n의 범위가 20까지라면 재귀함수로 구현해도 충분히 모든 테스트케이스를 통과할 수 있을 것이다.

왜냐하면 재귀함수로 피보나치 수열을 구현했을 때 어쨌든 n=40정도까지는 안 터지고 돌아간다고 생각하면 되는 듯하다. (일단 내가 이클립스 상에서 돌려봤을 때는 n=45도 결과값 잘 출력됨. 다만 BOJ 문제풀이를 하면 시간 초과가 될 뿐^_^)

 

정석대로 구현해보자!!

아무튼 그래서 피보나치 수열을 재귀함수를 이용해서 정석적으로 구현해보았다.

// 핵심 코드
private static int fibo5(int n) {
	if(n<=1) {return n;}
	else {
		return fibo5(n-1) + fibo5(n-2);
	}
}

(문제이름이 '피보나치 수 5'라서 메소드 이름을 fibo5로 했을 뿐 별다른 의미는 없다 ㅎㅎ)

가뿐하게 성공!!

역시 브론즈 문제답게 가뿐하게 해결했다.

게다가 앞에서 시간 초과로 못 써봤던 재귀함수 코드도 써볼 수 있어서 꽤나 만족스러운 문제풀이 시간이었다.😉

 

 

- 피보나치 수 시리즈는 계속된다, to be continued... -

반응형

댓글