Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- VectoreStore
- Two Pointer
- python
- heapq
- 파이썬
- jenkins
- typescript
- javascript
- CI/CD
- OpenAI
- frontend
- Infra
- javascirpt
- ansible
- turbo
- BFS
- docker
- Algorithm
- queue
- DP
- LLM
- 프로그래머스
- dfs
- modbus
- 알고리즘
- rag
- build
- AI
- React
- monorepo
Archives
- Today
- Total
DM Log
[연습문제] 피보나치 수 - Python / JavaScript 본문
문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/12945
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제 간단 요약]
1. 피보나치 수를 구현하는 문제
2. 피보나치 수의 1234567로 나눈 값을 구하기
[문제 해결 방안]
1. 피보나치 수 f(0)과 f(1)을 미리 지정
2. 이후의 값을 앞의 2개와 합산해서 구해지도록 하
[문제 해결 코드 - python]
def solution(n):
dp=[0] * 100001
dp[0]=0
dp[1]=1
for i in range(2,n+1):
dp[i] = dp[i-2]+dp[i-1]
return dp[n] % 1234567
[문제 해결 코드 - javascript]
function solution(n) {
const dp = Array(n+1).fill(0)
dp[0] = 0
dp[1] = 1
for (let i=2; i<=n; i++) {
dp[i] = (dp[i-2] + dp[i-1]) % 1234567
}
return dp[n];
}
- 테스트 케이스 7~14번 문제 실패 원인 : 피보나치 수의 크기가 너무 커져 자료형의 범위를 넘어 오버플로우 발생
- (A + B) % C == (A % C + B % C) % C라는 수학적 성질을 이용하여 1234567보다 작은 수를 유지 하도록 만듬
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [완전탐색] 카펫 - Python / JavaScript (0) | 2025.02.18 |
|---|---|
| [2017 팁스타운] 짝지어 제거하기 - Python / JavaScript (0) | 2025.02.17 |
| [연습문제] 숫자의 표 - Python / JavaScript (3) | 2025.02.09 |
| [월간 코드 첼린지 시즌1] 이진 변환 반복하기 - Python / JavaScript (2) | 2025.02.08 |
| [스택/큐] 올바른 괄호 - Python / JavaScript (7) | 2025.02.07 |