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
- heapq
- python
- Algorithm
- 알고리즘
- javascirpt
- 파이썬
- frontend
- typescript
- rag
- React
- backend
- BFS
- dfs
- retriever
- OpenAI
- DP
- 코딩테스트
- queue
- 스택/큐
- AI
- VectoreStore
- LLM
- InfluxDB
- javascript
- modbus
- 프로그래머스
- MCP
- 완전탐색
- chroma
- Two Pointer
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 |