programmers.co.kr/learn/courses/30/lessons/12945
코딩테스트 연습 - 피보나치 수
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) =
programmers.co.kr
재귀함수가 이해가 잘 안돼서 재귀 관련 문제를 찾다가 풀게 되었다.
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
if (n==0|| n==1)
n;
else
answer+=solution(n-1)%1234567+solution(n-2)%1234567;
return answer;
}
그래도 피보나치 수열은 쉽구나! 하다가
7번부터 시간 초과..
알고보니 재귀로 풀면 메모리 초과때문에 안되는 거였다.
항상 재귀는 배신을 해....
결국 이렇게 풀었다
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
vector<int> fib;
fib.push_back(0);
fib.push_back(1);
for(int i=2;i<=n;i++){
fib.push_back((fib[i-2]+fib[i-1])%1234567);
}
return fib[n];
}
백준 문제는 항상 이렇단 말이지.😒
인생이란 원래 자기 생각대로 되지 않는 법이란다..
'Coding > 코딩테스트' 카테고리의 다른 글
#67256 키패드 누르기 (0) | 2021.07.17 |
---|---|
#12926 시저 암호 (0) | 2021.02.17 |
#17677 뉴스 클러스터링 (0) | 2020.11.05 |
#1181 단어 정렬 (0) | 2020.10.29 |
#13414 수강신청 (0) | 2020.10.29 |