프로그래머스_피보나치 수

LeeYulhee·2023년 9월 11일
0

💻 문제 출처 : 프로그래머스_피보나치 수

👉 내가 작성한 답


class Solution { 
    public int solution(int n) {        
        int answer = 1;
        int answerBefore = 0;

        for(int i = 2; i <= n; i++) {
            int temp = answer;
            answer = (answer + answerBefore) % 1234567;
            answerBefore = temp;
        }

        return answer;

    }
}
  • 📌 접근 방식
    • 재귀로 풀면 Stack Overflow 에러 발생 ⇒ Map으로 캐시 저장해도 발생
    • n이 100,000 이하라 int나 long으로 해결 불가
    • ⇒ 반복문으로 구현
  • 📌 문제 풀이 설명
    • int 변수 answer에 1을 대입하고, int 변수 answerBefore에 0을 대입
      • 피보나치 수 0번째와 1번째가 0과 1이기 때문
    • for문으로 2부터 n이하까지 1씩 증가하며 순회
      • 피보나치 수 0번째와 1번째는 변수에 선언하여 계산한 것과 같기 때문에 구해야 하는 2부터 순회
      • int 변수 temp에 answer 대입
      • answer에 (answer + answerBefore) 에서 1234567을 나눈 나머지 값을 대입
        • n번째 피보나치 수에서 1234567을 나눈 나머지 값을 구해야 함
        • (answer % 1234567) + (answerBefore % 1234567) == (answer + answerBefore) % 1234567
      • answerBefore에 temp 대입
    • for문 종료 후 return answer
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글