728x90
    
    
  반응형
    
    
    
  문제

분석
피보나치를 구현해서 풀면된다.
하지만 문제 중 2이상의 n 이 입력이 되었을때 N 번째 피보나치 수를 1234567 로 나눈 나머지 리턴...
조건이 불친절하고 명확하지가 않다.
그래서 여러가지 시도를 해봤다
1. 구한 피보나치 마다 %1234567 을 하란것인가?
2. 전체를 구한 값에서 %1234567 을 하란말인가?
1번이 맞았다.
뭔가 효율성 검사도 할지 몰라서 DP 를 이용해서 풀었다.
피보나치는 반복된 값이 나오기 때문이다.
구현
class Solution {
    
    private long []dp;
   
    
    public long fibo(int n) {
        if(dp[n] != 0) {
            return dp[n];
        }
        dp[n] = (fibo(n-1) + fibo(n-2)); 
        return dp[n] % 1234567;
    }
    
    
    public int solution(int n) {
        int answer = 0;
        dp = new long[1000001];
        dp[0] = 0;
        dp[1] = 1;
        dp[2] = 1;
        
        long answer1 = fibo(n);
        answer = (int)answer1;
        return answer;
    }
}
결과

문제링크: https://programmers.co.kr/learn/courses/30/lessons/12945
코딩테스트 연습 - 피보나치 수
피보나치 수는 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) =
programmers.co.kr
728x90
    
    
  반응형
    
    
    
  'Algorithm > 프로그래머스 알고리즘' 카테고리의 다른 글
| [프로그래머스] 영어끝말잇기 (0) | 2021.10.15 | 
|---|---|
| [프로그래머스] tuple (0) | 2021.09.07 | 
| [프로그래머스] JadenCase 문자열 만들기 (0) | 2021.08.10 | 
| [프로그래머스] 쇠막대 (2) | 2021.08.10 | 
| [프로그래머스] 전화번호 목록 (0) | 2021.08.09 | 
		
	
                
                
                
                
                
                
                
                                                
                
                
                
										
									
										
									
										
									
										
									
댓글