Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 피보나치 수 (2747) (Java/자바) 본문

알고리즘문제/백준 문제(Java)

[백준] - 피보나치 수 (2747) (Java/자바)

luke-king 2025. 9. 28. 15:36

문제 : https://www.acmicpc.net/problem/2747

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

 

풀이.


public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        if(n == 0){
            System.out.println(0);
            return;
        }

        int a = 0, b = 1;
        for(int i = 2; i <= n; i++){
            int temp = a + b;
            a = b;
            b = temp;
        }
        System.out.println(b);

    }

}

이번 문제는 프로그래머스 "피보나치 수" 문제다.

 

피보나치 수 문제는 공식이 있는 문제다. 사실 필자는 비전공이고 이공계열이 아니라.. 이해하는데 시간이 조금 걸렸지만 이공계열 분들은 이미 알고 계실 거라 생각이 든다. 하지만 필자 같은 비전공 이공계열이 아닌 분들을 위해 간단하게.. 필자가 문제를 풀면서 설명해둔 글이 있으니 밑에 링크를 참고하면 되겠다.

그럼 바로 풀이 해보겠다.

설명글 : 

 

1. 첫 번째 if문을 사용해 준 부분은 n의 값이 0이 들어간다면 당연히 0이 나오기에 0의 조건을 만들어 준다.

 

2. int a = 0, b = 1이 있는데 이 부분은 피보나치 수 0번째는 0, 1번째는 1이므로 고정 값이라 생각하면 된다.

 

3. 이제 for문 loop를 돌린다 돌리 때 i값은 2부터 시작한다 이유는 앞에 피보나치 수 0,1번째 역할을 하고 있는 a, b 값이 있기 때문이다.

 

4. 여기서 중요하다. 

temp = a + b는 temp = 0 + 1 (1)

a = 1

b = 1

즉 피보나치 수 2번째의 값은 b의 값인 1이다. 

(이미 문제 설명에도 0,1,1,2,3,5,8,13,21~~  순이고 2번째 값부터는 바로 앞 두 피보나치 수의 합이다.)

 

5. 이번엔 3번째 값을 봐보겠다.

temp = 1 + 1 (2)

a = 1

b = 2

즉 3번째의 값은 2가 나온다.

이런 식으로 반복돼서 최종적으로 10번째는 55의 값이 나오게 된다. 그럼 끝이다.