띠오니 개발자 성장일지
article thumbnail
반응형

 

인프런의 "자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비" 강좌를 수강했습니다.

C, C++, Python, Js 등 다른 언어의 강의도 있으니 본인에게 맞는 강의를 선택하시면 됩니다. 😁

https://inf.run/pCPH

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com

 


Q2-04. 피보나치 수열(Fibonacci Sequence)

피보나치 수열 : 앞의 두 수를 합하여 다음 숫자가 되는 수열
피보나치 수열을 출력하라.

피보나치 수열의 총 항의 수를 입력한다.

 

예시 입력 예시 출력
10 (3<=N<=45) 1 1 2 3 5 8 13 21 34 55

 

 

✏️ 내가 쓴 답

피보나치 수열이란 첫 번째 항과 두 번째 항이 1이며 그 뒤의 항은 바로 앞 두 항의 합인 수열이다. (해시넷 위키)

solution() 반환타입은 int[] answer 정수형 변수로 반환한다.

첫 번째 항과 두 번째 항은 1이므로 answer[0], answer[1] 의 값은 1이다.

이를 활용해 입력된 항의 개수만큼 반복문을 돌리자.

여기서 주의할 점은 for문 i의 초기값은 2부터 시작해야 한다. 피보나치 수열 특징이 바로 앞 두 항의 합이기 때문에,

반복문을 돌 때 최소 2개 이상의 항이 앞에 존재해야 한다.

answer[0], answer[1] 은 1로 초기화 했기 때문에 answer[2] 부터 값을 더해간다.

결과는 정답 !!✅

import java.util.Scanner;

public class Main {
    public int[] solution(int num) {
        int[] answer = new int[num];
        answer[0] = 1;
        answer[1] = 1;

        for(int i=2; i<num; i++) answer[i] = answer[i-2] + answer[i-1];
        return answer;
    }

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

        for(int x : main.solution(sc.nextInt())) System.out.print(x + " ");
    }
}

 

 

👨🏻‍🏫  풀이코드

선생님도 나랑 같은 방식으로 풀이해주셨다.

변형 문제도 살짝 내주셨는데 만약에 배열을 쓰지 않고 출력한다면?!

배열사용 X 

배열 사용 없이 변수로 할 뿐, 큰 틀은 바뀌지 않는다.

주의할 점은 연산이 끝난 후, 두번째 항 b -> 첫번째 항 a가 되고

연산 결과인 세번째 항 c -> 두번째 항 b로 바꾸어야 다음 수열 연산이 올바르게 된다는 점 주의 하자!

public void solution(int n){
    int a=1, b=1, c;
    System.out.print(a+" "+b+" ");
    for(int i=2; i<n; i++){
        c=a+b;
        System.out.print(c+" ");
        a=b;
        b=c;
    }
}
    
public static void main(String[] args){
    Main T = new Main();
    Scanner kb = new Scanner(System.in);
    int n=kb.nextInt();
    T.solution(n);
}

 

반응형
profile

띠오니 개발자 성장일지

@띠오니

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!