-
[백준/BOJ] 2747번 : 피보나치 수 (JAVA / 자바)백준 2022. 2. 1. 16:48
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/2747
- 문제 -
난이도 브론즈 3 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
두가지 방법으로 풀어보겠다. 큰 차이는 아니다.
첫번째는 문제의 방식이 두개의 숫자로 서로의 합을 해나가는 방식이기에 두개의 변수로 각 변수를 합 저장하는 풀이.
두번째는 배열에 저장해서 푸는 방식이다.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); //0번째수는 0이고 1번째 수는 1이기에 두 변수에 각각 수를 저장해준다. int A = 0; int B = 1; for(int i = 2; i <= N; i++) { //A와 B에 각 순서에 맞춰 서로의 값을 더해준다. 순서는 홀수 짝수 판단해서 정한다. if(i % 2 == 0) { A += B; }else { B += A; } } //N번째 수를 구하는 방법은 A와 B를 짝수 홀수 차례로 나눈것처럼 구한다. if(N % 2 == 0) { System.out.println(A); }else { System.out.println(B); } } }
import java.io.*; import java.util.*; import java.lang.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); //최대 인덱스가 배열 크기의 -1 인데 주어진 피보나치 수는 0인덱스 부터이기 때문에 n+1로 넣어준다. int[] arr = new int[n + 1]; //0과 1은 기본 값으로 주어져야하기 때문에 0과 1로 넣어준다. arr[0] = 0; arr[1] = 1; //2인덱스 부터 반복문을 돌려준다. for(int i = 2; i < n + 1; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } System.out.println(arr[n]); } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 2765번 : 자전거 속도 (JAVA / 자바) (0) 2022.02.01 [백준/BOJ] 2754번 : 학점계산 (JAVA / 자바) (0) 2022.02.01 [백준/BOJ] 2742번 : 기찍 N (JAVA / 자바) (0) 2022.02.01 [백준/BOJ] 2741번 : N 찍기 (JAVA / 자바) (0) 2022.02.01 [백준/BOJ] 2739번 : 구구단 (JAVA / 자바) (0) 2022.02.01