피보나치 수열

Seungmin Lim·2022년 2월 6일
0

코딩문제연습

목록 보기
17/63

문제

나의풀이

import java.util.*;

class Main {
	public int[] solution(int n) {
		int[] answer = new int[n];
		answer[0] = 1;
		answer[1] = 1;
		int start = 1;
		for(int i=2; i<n; i++) {
			answer[i] = answer[i-1] + answer[i-2];
		}
		
		return answer;
		}
        
        //배열 사용하지 않기
     public void solution2(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();
		for (int x : T.solution(n)) {
			System.out.print(x +" ");
		}
	}
	
}

풀이방법

  1. 배열로 풀 때
    n크기의 배열에 1,2번째 값을 미리 넣은 후, 그다음 값부터 for문을 통해
    2칸 앞 + 1칸 앞 = 다음값으로 지정해서 배열에 추가해주었다.
  1. 손코딩으로 풀 때
    배열과 비슷하게 1,2번째 값(a,b)은 미리 출력해주고, 다음 값부터 for문을 통해
    a+b = 다음값
    출력
    a = b, b = c를 통하게 해 값을 지정해준다.

핵심키워드

배열로 풀 때와 직접 출력할때 모두 기억해두자!

0개의 댓글