https://school.programmers.co.kr/learn/courses/30/lessons/12945
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 1;
vector<int> v;
v.push_back(0);
v.push_back(1);
if (n < 3)
return answer;
for (int i = 2; i <= n; i++)
v.push_back((v[i-2] + v[i-1]) % 1234567);
answer = v[n];
return answer;
}
- 피보나치 수를 구하는 문제
- 피보나치는 0+1+1+2+3+5........ 이렇게 더해가는 규칙을 갖는다
- 이를 수식으로 표현하면 f(n) = f(n-1)+ f(n-2)이다
- 이를 사용해 수식을 구하기 위해 vector를 이용해 계산된 결과 값들을 계속 들고갈 것이다
- 예외처리로 n 이 2보다 크거나 같은 수부터 시작이고, n == 2일 땐 무조건 1이므로 예외처리를 하여 시간을 줄여준다
- 나머지 값들은 i = 2부터 n과 같을때 까지 vector에 저장된 수를 이용해 점화식을 구현한 값을 vector에 저장해주면 된다
'코딩 태스트 > 문제풀이' 카테고리의 다른 글
코딩테스트 책 - 모의고사 (0) | 2025.03.17 |
---|---|
카펫 - 42842 (0) | 2025.03.13 |
이진 변환 반복하기 - 70129 (0) | 2025.03.11 |
JadenCase 문자열 만들기 - 12951 (0) | 2025.03.11 |
최댓값과 최솟값 - 12939 (0) | 2025.03.10 |