본문 바로가기

알고리즘/인프런

섹션 2. Array(1, 2차원 배열)_4. 피보나치 수열

문제

  • 피보나치 수열을 출력한다. 피보나치 수열이란 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다.
  • 입력은 피보나치 수열의 총 항의 수 이다. 만약 7이 입력되면 1 1 2 3 5 8 13을 출력하면 된다.

입력

  • 첫 줄에 총 항수 N(3<=N<=45)이 입력된다.

출력

  • 첫 줄에 피보나치 수열을 출력합니다.

입출력 예제


두 가지로 풀어볼 것이다.

1. 배열 사용

2. 배열 미사용

1. 배열 사용

먼저 배열을 사용하는 것은 간단하다.

1.  총 항의 수를 입력받을 변수 N을 선언한다.

 

2.  배열 첫번째와 두번째인 A[0]A[1]에 1로 값을 넣어준다.

  • 처음 두 수는 무조건 1이 되어야 하기 때문이다.

3. 2부터 시작하는 for문을 선언한다.

  • 0번쨰와 1번째 배열은 이미 1로 값을 넣어줬기 때문에 2번째 배열부터 시작한다.

4. A[i]번째 배열의 값은 A[i-2] + A[i-1] 을 통해 넣어준다.

  • 피보나치 수열은 앞의 두 수를 합한 값이기 때문이다.

5. 0부터 N까지 도는 for문을 작성해서 결과를 출력한다.

 

수행 결과를 확인한다.


2. 배열 미사용

배열을 사용하지 말고 작성해보자.

1. main 부분에는 입력받을 행의 개수 N을 선언하고, 메소드 수행 코드를 작성한다.

 

2. 이제 메소드 구현이다.

 

3. 배열을 사용할 수 없으므로 변수 A, B, C를 사용할 것이다.

 

4.  A와 B는 각각 첫번째와 두번째 수로, 1을 넣어준다.

 

5. A와 B를 출력한다.

 

6. 배열 2번째부터 돌아가는 for문을 작성한다.

 

7. C에는 A + B 값을 넣어준다.

 

8. C 값을 출력한다.

 

9. A,B,C까지 한바퀴 돌았으므로 A에는 B, B에는 C 값을 넣어서 다음 값들을 넣어준다.

 

수행 결과를 확인한다.


해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.