PS [6일차]

Daniel·2022년 7월 22일
0

PS

목록 보기
6/32
post-thumbnail

문제번호

2747

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    // n번째 수 입력
    int n = in.nextInt();

    // 결과값을 저장하는 변수 선언
    int result = 0;
    
    //Fn-2 
    int first = 0;
    // Fn-1 
    int second = 1;
    

    // n이 0과 1인 경우를 제외한 나머지는 Fn = Fn-1 + Fn-2 이므로 else문 실행
    for (int i = 0 ;i < n; i++) {
      if (n == 0)
        break;
      if (i == 1)
        result = 1;
      else {
        result = first + second;
        first = second;
        second = result;  
      }  
    }
    // 출력
    System.out.println(result); 
  }
}

문제

평범한 피보나치 수열 문제이다.

풀이

피보나치 수열을 이해하는지가 중요한 문제이다.

  • 피보나치 수열
    Fn = Fn-1 + Fn-2

이러한 피보나치 수열의 특성때문에 0과 1번째 수는 동적인 프로그래밍이 제한된다. 하지만 그 이후에는 피보나치 수열을 그대로 코드로 적용하면 되기에 문제가 없다.

회고

분명히 난 피보나치 수열문제를 푼적이 있다. 그리고 브론즈 문제인지라 전에 푼 문제와 많은 차이가 나지 않는데 좀 걸렸던걸 생각하면 많이 부족하다는 생각이 든다.

profile
폐쇄

0개의 댓글