[프로그래머스] 피보나치 수

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];
}