[ Programmers ] 피보나치 수 (Java)

ma.caron_g·2021년 12월 6일
0

Lv.2 - Programmers

목록 보기
4/14
post-thumbnail

1. Problem 📃

[ 피보나치 수 ]

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) = 2 + 3 = 5
와 같이 이어집니다.

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


2. Constraint 🔗

[ 제한 사항 ]

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

3. Example 📚

[ 입출력 예시 ]

nreturn
32
55

4. Solution 🔑

  1. 피보나치 수는 [ 문제 설명 ] 에서 처럼 다음 값을 자신과 자신 전에 나온 값을 더한 값으로 지정하는 수이다.
    0번째부터 0, 1, 1, 2, 3, 5, 8, 13, 21, 34... 식으로 증가한다.

  2. 이전 숫자를 담을 변수(pNum), 현재 숫자를 담을 변수(cNum)을 선언해준다.
    pNum에는 미리 0번째 수를, cNum에는 1번째 수를 미리 담아둔다.
    이미 2개가 들어간 상태이므로 n보다 -2 작게 for문을 돌려 n번째 수를 찾는다.

  3. for문으로 다음 수를 pNum과 cNum의 더한 값을 1234567로 나눈 값을 찾고, 전에 나온 수(pNum)은 현재 수(cNum)를 대입해주고, cNum은 위에 구한 현재 수로 바꾸어서 n-2까지 구하여 나온 값을 반환하여준다.

5. Code 💻

class Solution {
    public int solution(int n) {
    	int answer = 0;
        int pNum = 0;
        int cNum = 1;
        
        for(int i=0; i<n-1; i++) {
        	answer = ( pNum + cNum ) % 1234567;
        	pNum = cNum;
        	cNum = answer;
        }
        return answer;
    }
}

6. Growth 🍄

피보나치 수는 직전에 나온 수와, 현재 수를 더하여 다음 값을 만들어주는 수.
0번째 수는 0, 1번째 수는 1로 시작.
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글