728x90
반응형
SMALL

문제 설명

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

입출력 예

n return

3 2
5 5

입출력 예 설명

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

 

package LV2;

public class H12945 {
	public int solution(int n) {
		int answer = 0;  // 결과를 저장할 변수를 선언, 초기값은 0으로 설정

		long[] pib = new long[n + 1];  // 피보나치 수열의 각 항을 저장할 배열을 선언 
		// long 자료형으로 선언한 이유는 피보나치 수열의 값이 int 범위를 초과할 수 있기 때문

		pib[0] = 0L;  // 피보나치 수열의 0번째 항을 설정
		pib[1] = 1L;  // 피보나치 수열의 1번째 항을 설정

		for (int i = 2; i <= n; i++) {  // 2부터 n까지 반복
			pib[i] = (pib[i - 1] + pib[i - 2]) % 1234567L;  // 피보나치 수열의 정의에 따라 i번째 항을 (i-1번째 항 + i-2번째 항)으로 설정하고, 이를 1234567로 나눈 나머지를 저장
		}

		answer = (int) pib[n];  // 계산된 n번째 피보나치 수를 answer에 저장
		
		return answer;  // 계산 결과를 반환
	}
}
728x90
반응형
LIST

'알고리즘 > 프로그래머스 JAVA LV.2' 카테고리의 다른 글

짝지어 제거하기  (0) 2023.05.22
카펫  (0) 2023.05.22
기능개발  (0) 2023.05.19
프로세서  (0) 2023.05.19
행렬의 곱셉  (1) 2023.05.18

+ Recent posts