본문 바로가기

알고리즘 문제 풀이/Programmers

피보나치 수 - 2단계 (C, C++)

반응형
SMALL
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
	int answer = 1;
    int f1 = 0;
    int temp;
    for (int i = 0; i < n - 1; i++) {
    	temp = answer;
        answer = answer + f1;
        f1 = temp;
        answer %= 1234567;
        f1 %= 1234567;
    }
    return answer;
}
// 문제가 마지막 결과값을 1234567로 나눈 값을 리턴하라인 줄 알았는데, 그게 아니었네요. 나머지를 계속해서 더해라는 뜻이었습니다.
// 동적 배열을 사용
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int n) {
	int answer = 0;
    int *arr = (int*)malloc(sizeof(int)*n+1);
    arr[0] = 0;
    arr[1] = 1;
    for (int i = 2; i <= n; i++){
        arr[i] = arr[i-1]%1234567 + arr[i-2]%1234567;
    }
    answer = arr[n] % 1234567;
    return answer;
}

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
	int answer = 0;
    vector<int> arr;
    arr.push_back(0);
    arr.push_back(1);
    for (int i = 0; i < n - 1; i++){
    	arr.push_back(arr[i] % 1234567 + arr[i + 1] % 1234567);
    }
    answer = arr[n] % 1234567;
    return answer;
}
반응형
LIST