[프로그래머스] 피보나치 수
2023. 1. 27. 15:40ㆍ기록/Programmers
- 목차
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12945
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 문제 풀이
function solution(n) {
let stack = [0, 1];
for (let i = 2; i <= n; i++) {
stack.push((stack[0] + stack[1]) % 1234567);
stack.shift();
}
return stack[1];
}
- n은 2 이상의 정수이기 때문에 stack 배열에 미리 0~1번째 피보나치 수를 넣어놓음
- 2부터 n까지 1씩 증가하면서 반복함
- stack 배열의 0번째 요소와 1번째 요소를 더하여(피보나치 수) 1234567로 나눈 나머지 값을 해당 배열에 넣음
- stack 배열의 제일 첫번째 요소를 삭제함 (피보나치 수는 두 개의 숫자만 더하면 되기 때문)
- stack 배열의 1번째 요소를 리턴함 (n번째 피보나치 수)
다른 사람의 문제 풀이
function fibonacci(n) {
var a = 0, b = 1, f = 1;
for (var i = 2; i <= n; i++) {
f = a + b;
a = b;
b = f;
}
return f;
}
function solution(n) {
var result = [0 , 1];
while ( result.length !== n + 1) {
var fibonacci = (result[result.length - 2] + result[result.length - 1]) % 1234567
result.push(fibonacci);
}
return result[n];
}