250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

[알고리즘 트레이닝] 백준 알고리즘 2747번 : 피보나치 수[JAVA] 본문

[Snow-ball]프로그래밍(컴퓨터)/Algorithm Training

[알고리즘 트레이닝] 백준 알고리즘 2747번 : 피보나치 수[JAVA]

Snow-ball 2021. 6. 30. 13:06
반응형

DAY ONE 을 잊지말자!!

 

문제

피보나치 수는 0 1 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 다음 2번째 부터는 바로 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n 2) 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n 주어졌을 , n번째 피보나치 수를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 n 주어진다. n 45보다 작거나 같은 자연수이다.

 

출력

첫째 줄에 n번째 피보나치 수를 출력한다.

 

 

 

 

 

풀이 1.

 

Scanner와 if, for 문

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
import java.io.IOException;
import java.util.Scanner;
 
public class Fibonnachi {
    public static void main(String[] args) throws IOException {
 
        Scanner scan = new Scanner(System.in);
        System.out.printf("입력값은 : ");
        int firstNum = 1;
        int secondNum = 1;
        int addNum = 0;
 
        int inputNum = scan.nextInt();
 
        if (inputNum > 2) {
            for (int i=0; i<inputNum-2; i++){
                addNum = firstNum + secondNum;
                firstNum = secondNum;
                secondNum = addNum;
            }
        } else if(inputNum == 1 || inputNum == 2) {
            addNum = 1;
        } else {
            System.out.println("잘못된 입력입니다");
        }
        System.out.printf("%d번째 수열의 값 = %d", inputNum, addNum);
    }
}
cs

 

 

 

풀이 2.

 

BufferedReader 와 if,for 문

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
31
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Fibonnachi2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("BufferedReader ::: " );
        int inputNum = Integer.parseInt(br.readLine());
        System.out.print("inputNum : " + inputNum);
 
        int firstNum = 1;
        int secondNum = 1;
        int addNum = 0;
 
        if (inputNum > 2) {
            for (int i=0; i<inputNum-2; i++){
                addNum = firstNum + secondNum;
                firstNum = secondNum;
                secondNum = addNum;
            }
        } else if(inputNum == 1 || inputNum == 2) {
            addNum = 1;
        } else {
            System.out.println("잘못된 입력입니다");
        }
        System.out.printf("\n%d번째 수열의 값 = %d", inputNum, addNum);
    }
 
}
 
cs

 

풀이 3.

 

BufferReader와 함수 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Fibonnachi3 {
 
    public static int fibo(int inputNum){
        if (0 <= inputNum && inputNum <= 1)
            return inputNum;
        else
            return fibo(inputNum-2+ fibo(inputNum-1);
    }
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("BufferedReader ::: ");
        int inputNum = Integer.parseInt(br.readLine());
        System.out.print("inputNum : " + inputNum);
    }
}
cs

 

반응형
Comments