반응형
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
- 정규표현식문제
- js 알고리즘
- 알고리즘
- 프로그래머스
- 좌표거리구하기
- 프로그래머스 자바스크립트 풀이
- 자바스크립트 배열
- 티스토리챌린지
- 정렬 알고리즘
- 자바스크립트 정렬
- JavaScript
- node.js
- Javascript sort
- 키패드누르기풀이
- 맨해튼거리
- next.js
- MySQL
- 깃허브
- TypeScript
- mysql스키마
- 프로그래머스 신규아이디추천
- 타입스크립트
- 자바스크립트 알고리즘
- 오블완
- 자료구조
- Javascript 정렬
- 맨해튼거리예제
- TS
- 프로그래머스 자바스크립트
- binary search
Archives
- Today
- Total
FE PARADISE
프로그래머스 피보나치 수 - 자바스크립트 풀이 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12945
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
처음에 이와 같이 재귀함수로 풀었으나
function solution(n) {
if(n <= 1) return n;
else return (solution(n-1) + solution(n-2)) % 1234567;
}
시간 초과(런타임 에러)가 발생하여 코드를 아래와 같이 수정하였다.
자바스크립트 코드 풀이
function solution(n) {
let prev = 0, cur = 1;
for(let i = 2; i <=n; i++){
const next = (prev + cur) % 1234567;
prev = cur;
cur = next;
}
return cur;
}
초기에 F(0) = 0 , F(1) = 1이므로 prev = 0, cur =1 로 변수를 선언한다.
let prev = 0, cur = 1;
이후 값 2부터 for문을 돌면서 각각 피보나치 수를 구한다.
for(let i = 2; i <=n; i++){
const next = (prev + cur) % 1234567;
prev = cur;
cur = next;
}
prev, cur 값을 업데이트 해주면서 n-1, n-2일때 피보나치 계산 결과를 매번 새로 계산하지 않고 prev, cur 값을 가져다가 쓰기 때문에 메모이제이션이 없는 위의 재귀함수 코드에 비해 효율적이다 👍.
반응형
'자료구조 & 알고리즘' 카테고리의 다른 글
프로그래머스 카펫 - 자바스크립트 풀이 (0) | 2024.12.10 |
---|---|
프로그래머스 다음 큰 숫자 - 자바스크립트 풀이 (0) | 2024.12.08 |
프로그래머스 짝지어 제거하기 - 자바스크립트 풀이 (0) | 2024.12.01 |
프로그래머스 숫자의 표현 - 자바스크립트 풀이 (0) | 2024.11.27 |
프로그래머스 이진 변환 반복하기 - 자바스크립트 풀이 (0) | 2024.11.27 |