ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (Java) Programmers/연습문제/피보나치 수
    Algorithm 2022. 6. 15. 11:05
    728x90
    반응형

     

    - 목차

     

    문제 설명

    "프로그래머스 피보나치 수" 문제의 웹링크입니다.

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

     

    프로그래머스

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

    programmers.co.kr

     

     

    피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 

    예를들어 

    • F(2) = F(0) + F(1) = 0 + 1 = 1
    • F(3) = F(1) + F(2) = 1 + 1 = 2
    • F(4) = F(2) + F(3) = 1 + 2 = 3
    • F(5) = F(3) + F(4) = 2 + 3 = 5

    와 같이 이어집니다.

    2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.


    • n은 2 이상 100,000 이하인 자연수입니다.

    입출력

    3 2
    5 5

    피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.

     

     

    문제 분석.

    해당 문제는 재귀함수를 사용하게 된다면 시간초과가 발생합니다.

    그래서 배열을 활용한 방식으로 접근해야합니다.

     

     

    문제 풀이.

    class Solution {
        public int solution(int n) {
            if (n <= 1) return n;
            int[] fibos = new int[n + 1];
            fibos[0] = 0;
            fibos[1] = 1;
            for (int i = 2; i <= n; i++) {
                fibos[i] = fibos[i - 1] % 1234567 + fibos[i - 2] % 1234567;
            }
            int answer = fibos[n] % 1234567;
            return (int) answer;
        }
    }

    반응형
Designed by Tistory.