문제 설명
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2)가 적용되는 수입니다.
예를 들어
- F(2) = F(0) + F(1) = 0 + 1 = 1
- F(3) = F(1) + F(2) = 1 + 1 = 2
- F(4) = F(2) + F(3) = 1 + 2 = 3
- F(5) = F(3) + F(4) = 2 + 3 = 5
와 같이 이어집니다.
2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.
제한 사항
* n은 1 이상, 100000 이하인 자연수입니다.
풀이
def solution(n):
return Fibonachi(n)%1234567
def Fibonachi(num): #피보나치 구현
li = [0,1] # 초기값 0,1
for i in range(2,num+1):
if num <2:
break;
if num >= 2:
li.append(li[i-1]+li[i-2])
return li[-1] # 제일 마지막 배열이 피보나치 구현이 완료된 수임
느낀 점
피보나치의 수는 전의 전항과 전항을 더한 게 새로운 항의 값이 되는 것이다. 이과를 나온 나로서는 쉽게 문제를 풀 수 있었다.
피보나치의 수를 아예 모르는 사람들은 문제 풀기가 좀 어려웠을 수도 있을 것 같다. 다른 분의 풀이는 a, b = b, a+b 이런 식으로 해결하셨는데 첫 번째 항을 다음항으로 스왑 해주고 다음 항을 두 항을 더한 값으로 스왑 해주는 방법으로 해결하셨다. 이런 생각을 조금만 하면 나도 할 수 있을 텐데 난 아직 많이 부족한 것 같다. 열심히 해야겠다.
'Algorithm' 카테고리의 다른 글
[BOJ/백준] 2805번 나무자르기 (0) | 2020.11.23 |
---|---|
[프로그래머스] 프린터 (0) | 2020.11.23 |
[프로그래머스] 최댓값 최솟값 (0) | 2020.11.20 |
[프로그래머스] 다음 큰 숫자 (0) | 2020.11.20 |
[BOJ/백준] 1654번 랜선자르기 (0) | 2020.11.20 |