학습장/Algorithm

1. 9. 2. Fibonacci Numbers 의 합계 구하기 순서도

Shin Jaehyun 2018. 4. 22. 23:14
수열의 마지막입니다. 

다음은 '수학', '자료구조'가 있네요. 

지난 일요일 시험을 마치고 종이자격증 되지 말라고 정리를 하나하나 하면서 나름 그림그리는데에도 익숙...(아.. 심미적 센스..) 해져가는듯 하고.. 
교재의 내용을 전부 다 가지고 와서 정리를 하면 좋겠지만... 그럼 안되겠죠.ㅡ_ㅡ; 
대략 큰 단락에서 바꿔서 정리하고 있습니다. 

실상은 기출문제의 복원분에 대해서 산업인력공단에서 저작권을 가지고 있기는 합니다. 그래도 구해본 복원분들이 사진으로 찍은 것처럼 정확한게 워낙 많아서, 
도움이 많이 되었어요. 

수열의 마지막, 피보나치 수열입니다. 
아래에 피보나치 수에 대한 Wikipedia link를 걸어두었습니다. 



문제에서는 보통 1 + 1 + 2 + 3 + 5 +... 이런 식으로 나오던 것 같아요. '이것은 피보나치 수열입니다.' 라고 가르쳐주지는 않았던 것 같기도 하고.. 가르쳐 준 것 같기도 하고.. 
다만 시험이 주관식으로 바뀌고 논란의 여지가 아무래도 조금이라도 줄어들도록, 숫자의 진행이나 조건에 대해서 귀찮을 정도로 자세하게 설명을 해주니까, 
이게 '1, 2, 3, 4' 씩 더하는 수인지, 또는 피보나치 수열인지 금방 파악이 되실 거라 생각됩니다. 

순서도는 아래와 같습니다. 


먼저 첫번째 수와, 두번째 수를 각각 1로 선언하고, 초기화 했습니다. 그리고, 항의 숫자와 sum의 숫자를 2를 줬어요. 
'1 + 1 + 2 +... '의 순서로 진행하기 때문에, 항의 숫자 2 그리고 sum의 숫자 2는 첫번째 항과 두번째 항이 합쳐진 상태에서 본 순서도, 그리고 곧이어 올릴 code 에서 진행된다는 뜻이기도 합니다. 

굳이 표를 넣어봤습니다.


첫번째 수
두번째 수
임시 합
전체 합
횟수 
(항의 수)
이름
firstN
secondN
tempN
sum
cnt
초기값
1
1
0
2
(1 + 1)
2
3번째 연산
(이게 순서도에서는 처음 연산이 됩니다.)
1

(첫번째 수와 두번째 수가 더해지고)
4
(1 + 1 + 2)
3
4번째 연산
1
secondN에 있던 수
2
임시합에 있던 수 
3
위와 동일
7
(1 + 1 + 2 + 3)
4
5번째 연산
2
위와 동일
3
위와 동일
5
위와 동일
12
(1 + 1 + 2 + 3 + 5)
5
굳이 이렇게 보여드리는 것보다, 천천히 써보시는게 익숙해지시는데 더 도움이 되리라 생각도 됩니다만, 피보나치 수열을 진행하는데 있어서는 횟수, 전체합의 수를 염두에 두시고 진행하시면 
언제까지 진행해야 하는지, 혼란스럽지는 않으실 거에요.