[코테/JAVA] 프로그래머스 : 멀리 뛰기

    728x90
    반응형

    문제

     

    프로그래머스

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

    programmers.co.kr

     

     

    접근방법

    1) 완전탐색을 통해 값을 구해보면 피보나치 수열과 같은 결과임을 알 수 있음

     

     

    코드

    import java.util.Map;
    import java.util.HashMap;
    import java.math.BigDecimal;
    
    class Solution {
        public long solution(int n) {
            return fibonacciNumbers(n);
        }
    
        /**
         * 피보나치 수열
         * n번째의 피나보치 수열을 계산한다.
         * @param n 피보나치 수열을 구할 자연수
         * @return long n번째 피보나치 수열
         */
        public long fibonacciNumbers(int n) {
            Map<Integer, BigDecimal> map = new HashMap<>();
            int idx=1;
            map.put(idx++, new BigDecimal("1"));
            map.put(idx++, new BigDecimal("2"));
            while(idx<=n) 
                map.put(idx++, map.get(idx-2).add(map.get(idx-3)));
            return map.get(n).remainder(new BigDecimal("1234567")).longValue();
        }
    }

     

     

    결과

     

     

    주의사항

    1) 이중 반복문 사용 시 시간초과가 발생함

    728x90
    반응형

    댓글