[문제]
피보나치 수는 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을 완성해 주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/12945
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🎨 풀이
💡 전체 코드
def solution(n):
answer = 0
fibo = [1,1]
for i in range(n):
fibo.append(fibo[i]+fibo[i+1])
answer = fibo[n-1] % 1234567
return answer
> 핵심 : fibo 리스트에 차례대로 추가해주기.
🍦 코드 설명 (실행 순서대로 나열)
#solution
answer = 0
fibo = [1,1]
for i in range(n):
fibo.append(fibo[i]+fibo[i+1])
1. 변수와 리스트를 초기화한다.
- answer : 정답
- fibo : [1,1]
- F(1) = 1, F(2) = 1 이라서 미리 넣어둔 것이다.
2. n번 for문을 실행한다.
3. fibo[i] + fibo[i+1] 값을 fibo에 추가해준다.
answer = fibo[n-1] % 1234567
return answer
4. fibo[n-1] % 1234567 값을 answer에 넣은 후 return 한다.
- 인덱스는 0부터 시작하기 때문에 n번째 값은 n-1에 들어있다!
- 문제에서 1234567로 나눈 나머지를 리턴하라고 했기 때문에 위와 같은 연산을 한 것이다.

끝~
⭐ 느낀점
> 피보나치는 풀 때마다 뭔가,, 기억이 잘 안나는 느낌이다. 여태 봤던 코테에서 피보나치가 직접 나온 적은 없지만 만약을 대비해서 유형들을 좀 기억해둬야 할 것 같기도 하다.
'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Level 2] 기능개발 (파이썬) (0) | 2022.09.22 |
---|---|
[프로그래머스 / Level 2] JadenCase 문자열 만들기 (파이썬) (0) | 2022.09.22 |
[프로그래머스 / Level 2] 숫자의 표현 (파이썬) (0) | 2022.09.19 |
[프로그래머스 / Level 2] 다음 큰 숫자 (파이썬) (0) | 2022.09.18 |
[프로그래머스 / Level 2] 올바른 괄호 (파이썬) (0) | 2022.09.17 |