본문 바로가기

알고리즘

D+6

백준 피보나치 5 : 브론즈 2

https://www.acmicpc.net/problem/10870

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
    
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int n = Integer.parseInt(st.nextToken());
        int result = 0;
        if(n>=2){
            int n1 = 0;
            int n2 = 1;
            for(int i=2;i<=n; i++ ){
                if(i%2==0){ // 짝
                    n1 = n1+ n2; 
                }else{ //홀
                    n2 = n1 +n2;
                }
            }
            result = (n1>n2)?n1:n2;
        }else{
            result = n;
        }
        
        System.out.println(result);
    }
}

피보나치 N이 0~20까지라서 재귀가 아닌 for문으로 해결함.

n1, n2 포인터 두개 써서 짝수홀수일때 나눠가며 계산하는걸로 짰는데..

문제는 for문이 헷갈린다..;; 충격.. for문의 조건순서가 헷갈리는건지.;;

0 번째부터 시작 N번째까지.. 가 갑자기 생소.. 계속 문제를 풀면서 익혀나가야겠다.

'알고리즘' 카테고리의 다른 글

D+7 백준 2609 최대공약수와 최소공배수  (0) 2021.10.12
D+6 백준 - 2309 일곱난쟁이  (0) 2021.10.12
D+5  (0) 2021.10.07
D+4  (0) 2021.08.31
D+2, 3  (0) 2021.08.26