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 |
31 |
Tags
- modbus
- 개발브로그
- 완전탐색
- frontend
- Two Pointer
- 알고리즘
- python
- DP
- pymodbus
- PCCP
- 프로그래머스
- 코딩테스트
- 좌표이동
- typescript
- algorhtim
- javascript
- set활용
- summerwintercoding
- dfs
- 42587
- InfluxDB
- javascirpt
- 1844
- Stack
- queue
- configfile
- Algorithm
- React
- 파이썬
- data platform
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 (2) | 2025.02.09 |
[월간 코드 첼린지 시즌1] 이진 변환 반복하기 - Python / JavaScript (2) | 2025.02.08 |
[스택/큐] 올바른 괄호 - Python / JavaScript (6) | 2025.02.07 |