최근 여러 곳에 이력서를 넣으면서 프로그래머스를 이용한 온라인 코딩테스트를 제출하는 곳이 여럿 보이길래, 한번 프로그래머스에 나오는 알고리즘 연습 문제들을 풀어보기 시작했습니다.
----------------------------------------------------------
프로그래머스 Level 1.피보나치 수
문제 ----------------------------------------------------------
피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다.
----------------------------------------------------------
재귀함수를 사용하여 간단하게 구할 수 있는 방법이 있지만
시간복잡도가 기하급수적으로 증가하므로
다음과 같이 이전 계산을 기억해두어 계산하는 방법이 있다.
#include<iostream> | |
using namespace std; | |
long long fibonacci(int n) | |
{ | |
long answer = 0; | |
long a = 0; | |
long b = 1; | |
for (int i = 0; i < n; i++) | |
{ | |
if (i != 0) | |
{ | |
answer = a + b; | |
a = b; | |
b = answer; | |
} | |
} | |
return answer; | |
} | |
int main() | |
{ | |
int testCase = 10; | |
long long testAnswer = fibonacci(testCase); | |
cout << testAnswer; | |
} |
'Programming > C++' 카테고리의 다른 글
알고리즘 문제 예제 1 (0) | 2017.12.06 |
---|---|
프로그래머스 Level 1.행렬의 덧셈 (0) | 2017.12.06 |
[C++]최대공약수, 최소공배수 구하기 (0) | 2017.10.09 |
[C++]바이트에서 1인 비트의 개수 세기 (0) | 2017.09.15 |
[C++]나눗셈을 피해서 연산하자 (0) | 2017.09.04 |