주녘공부일지

[프로그래머스 C#] Lv.2 피보나치 수 본문

Programmers - C#/CodingTest Lv.2

[프로그래머스 C#] Lv.2 피보나치 수

주녘 2023. 12. 7. 13:41
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12945

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 정답코드 및 핵심 아이디어, 유의사항

굉장히 직관적인 문제인 편으로 주어진 F(n) = F(n - 2) + F(n - 1) 수식을 적용하면 되는 문제

 

주의) int형 자료형의 범위를 벗어날 수 있음! 

-> 주어진 수식은 더하는 연산만 하고 있고, 결국에 1234567로 나눈 나머지를 리턴하기 때문에 1234567을 넘는 순간 나머지를 저장해줘도 연산 결과에 지장이 없음!

 

+ 처음에 int형의 범위를 벗어날 것 같아 long으로 해봤는데 어림도 없었음

 

주석 참조

    public class Solution
    {
        public int solution(int n)
        {
            int answer = 0; // F(n)
            int num1 = 0; // F(n-2)
            int num2 = 1; // F(n-1)

            for (int i = 2; i <= n; i++)
            {
                // F(n)을 구함
                answer = num1 + num2;

                // int형의 범위를 벗어나지 않기 위한 예외처리
                if (answer > 1234567)
                    answer %= 1234567;

                // 다음 연산을 위한 세팅
                num1 = num2;
                num2 = answer;
            }

            return answer;
        }
    }
728x90