비버놀로지

[Programmers 프로그래머스] 12945 피보나치 수 (JAVA) 본문

ALGORITM/JAVA

[Programmers 프로그래머스] 12945 피보나치 수 (JAVA)

KUNDUZ 2021. 7. 5. 15:49
728x90

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

 

문제 설명

피보나치 수는 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은 1이상, 100000이하인 자연수입니다.

입출력 예

 

n return
3 2
5 5

입출력 예 설명

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

 

 

피보나치수열을 구현하기 위해 for문을 활용해서 문제를 해결했습니다.

먼저 1과 2일때는 1로 해주고, n도 1이나 2일 경우 1로 리턴하게 합니다.

만약에 아니라면 for문을 활용해서 n까지 돌게 하고, 돌면서 answer과 num1, num2를 계속 바꿔주면서 결과값을 찾아내게 됩니다.

class Solution {
    public int solution(int n) {
		int answer = 0;
		int num1 = 1;
		int num2 = 1;
		if (n == 1 || n == 2)
			return 1;
		else {
			for (int i = 3; i <= n; i++) {
				answer = (num1 + num2) % 1234567;
				num1 = num2;
				num2 = answer;
			}
		}

		return answer;
    }
}

 

 

728x90
Comments