문제 풀기/C#

78. 피보나치

kagan-draca 2025. 2. 25. 15:07

 

기본 틀 :

public class Solution {
    public int solution(int n) {
        int answer = 0;
        return answer;
    }
}

 

문제를 잘 보면

 

0 + 1 = 1

1 + 1 = 2

1 + 2 = 3

2 + 3 = 5

 

0 + 1 = 1

11 = 2

12 = 3

2 + 3 = 5

 

이런 식으로 해당 값이 재사용 되는 것을 볼 수 있다.

 

그래서, 3개의 변수를 선언하고 +와 %1234567을 반복 수행해준다.

 

마지막에 %1234567을 하지 않고 + 연산을 수행할 때 하는 이유는

 

int.MaxValue인 2,147,483,647을 초과하는 숫자가 결과로 나올 수 있기 때문이다.

using System;

public class Solution {
    public int solution(int n) 
    {
        
        int zero = 0, one = 1, sum = 1;
        for(int i = 2; i <= n; i++)
        {
            sum = (one + zero) % 1234567;
            zero = one;
            one = sum;
        }
        return sum;
    }
}