본문 바로가기
엔트리메뉴/엔트리코딩시험-알고리즘

엔트리-피보나치수열

by flycoding 2022. 9. 7.
반응형

엔트리 -피보나치수열

 

엔트리 코딩시험에서 알고리즘의 가장 핵심적인 부분이 변수, 반복문, 조건, 함수이다.

 

이번 글에는 피보나치수열을 구현해보자.

 

피보나치수열에 대해 간략하 알아보자

피보나치수열이란 첫 번째 항의 값이 0이고 두 번째 항의 값이 1 일 때, 이후의 항들은 이전의 두 항을 더한 값으로 이루어지는 수열을 말한다.

예를 들면 0, 1, 1, 2, 3, 5,8, 13, 21, 34, 55,...인 수열이다.

 

규칙은 현재의 항과 바로 앞의 항을 더해서 다음 항의 수를 결정한다.

 

요구사항

최소공배수는 어떻게 구하지?

두  수를 각각 나누어서 나머지가 0인 수를 공배수로 한다.

그럼 최소공배수는 어떻게 구할 것인가?

두 수 중에 큰 값부터 시작해서 1씩 즈아시켜가며 두 수를 나누어 나머지가 0인 최초의 값이 최소공배수가 된다.

 

 

분석 및 설계

. 변수만들기

  - n : 수열의 몇 번째 항까지 나열할 것인지 저장하는 변수이다.

  - a : 수열의 앞에 항의 값을 저장한다.

  - b : 수열의 현재 항의 값을 저장한다.

  - c : 수열의 다음 항의 값을 저장한다.

  - pibo 리스트 변수 : 수열의 각 항을 저장하는 리스트 변수이다.

  - i : 인덱스 변수로 1부터 n항까지  1씩 증가시키는 인덱스 변수이다.

 

 

. 초기화

  - pibo 리스트 변수 모두 삭제하기

  - n값은 키보드로부터 입력받아 저장한다.

  -  a, b = 1

  - a, b를 pibo 리스트 변수에 추가한다.

 

. 피보나치 수열 만들기

  - i = 2

   - i=n까지 반복한다.

     - c = a+b

     - pibo에 c를 추가한다.

     - a <- b를 저장한다.

     - b <- c를 저장한다.

     - i=i+1 (1증가시킨다.)

 

블럭코딩

. 초기화
  - pibo 리스트 변수 모두 삭제하기

  - n값은 키보드로부터 입력받아 저장한다.
  -  a, b = 1
  - a, b를 pibo 리스트 변수에 추가한다.

 

엔트리-피보나치수열 초기화

 

. 피보나치 수열 만들기
  - i = 2
   - i=n까지 반복한다.
     - c = a+b
     - pibo에 c를 추가한다.
     - a <- b를 저장한다.
     - b <- c를 저장한다.
     - i=i+1 (1증가시킨다.)

 

엔트리-피보나치수열 알고리즘

 

 

* 디버깅

* 초기화

. n=8

. a=1

. b=1

. pibo : 1, 1 

 

 

* 피보나치수열 알고리즘

i=2

 

[1스텝]

2=8까지 반복하기 (false)

c=a+b (1+1 =>2)

a=1

b=2

i=3

pibo : 1, 1, 2

 

[2스텝]

3=8까지 반복하기 (false)

c=a+b (1+2 =>3)

a=2

b=3

i=4

pibo : 1, 1, 2, 3

 

[3스텝]

4=8까지 반복하기 (false)

c=a+b (2+3 =>5)

a=3

b=5

i=5

pibo : 1, 1, 2, 3,

 

[4스텝]

5=8까지 반복하기 (false)

c=a+b (3+5 =>8)

a=5

b=8

i=6

pibo : 1, 1, 2, 3,8

 

[5스텝]

6=8까지 반복하기 (false)

c=a+b (5+8 =>13)

a=8

b=13

i=7

pibo : 1, 1, 2, 3, 8, 13

 

[6스텝]

7=8까지 반복하기 (false)

c=a+b (8+13 =>21)

a=13

b=21

i=8

pibo : 1, 1, 2, 3, 8, 13, 21

 

[7스텝]

8=8까지 반복하기 (true)

 

말하기(pibo) : 1, 1, 2, 3, 8, 13, 21

 

 

* 실행 결과물

몇 항까지 피보나치 수열을 구할까요?  예제로는 8을 입력한다.

 

엔트리-피보나치수열 몇할까지 입력

 

 

피보나치수열 실행결과 화면입니다.

pibo 리스트에 결과값이 저장됨을 확인할 수 있다.

 

엔트리-피보나치수열 실행결과 화면

 

 

엔트리를 통해 피보나치 수열을 구하는 프로그램을 작성하였다. 피보나치수열을 구하는 알고리즘은 어렵지는 않다. 단지 유의할 점은 몇 항까지 구할 때 인덱스 변수를 처리하는 방식을 유의하게 보시고, 위에 디버깅으로 값들이 어떻게 변화하는지 꼭 한 번 검토해보고 프로그램 상에서도 어떻게 동작하는지 코드를 분석하고 이해하는 것을 꼭 추천드린다.

 

다시 한번 강조해서 말하지만, 변수의 값이 각 프로그램 단계별 순차적으로 어떻게 변화하는지 추척하는 것이 매우 중요하다. 블럭을 하나씩 쌓으면서 변수 볼륨 값의 변화를 살펴보자. 코딩은 눈으로 보면서 이해하고 학습하지만 직접 블럭을 쌓으며 이해하고 학습하는 것이 더 효과적이며 창의와 이해의 개념이 ~쑥 늘어납니다. 

앞으로의 여러분의 모습을 기대합니다.

 

Just Do it!!!

Just Drag&Drop!!!

 

MagneticFieldSen

 

반응형

댓글