-
[프로그래머스 Level 2] 멀리 뛰기 (JavaScript)Coding Test/JavaScript 2024. 11. 24. 19:50
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12914
입출력 예
n result 4 5 3 3 풀이
function solution(n) { if (n === 1) return 1; if (n === 2) return 2; let jump1 = 1; let jump2 = 2; let answer = jump2; for(let i=3; i<=n; i++) { answer = (jump1 + jump2) % 1234567; jump1 = jump2; jump2 = answer; } return answer; }
나는 문제를 풀 때 먼저 규칙을 찾아보는 편이다.
규칙을 찾아보려고 어느정도 계산을 해보았는데, 문제의 예시를 들어 설명해 보겠다.
n이 1일 때 답은 1,
n이 2일 때 답은 2,
n이 3일 때 답은 3,
n이 4일 때 답은 5,
n이 5일 때 답은 8...
보았을 때 피보나치 수열과 같은 형식임을 확인했다.
피보나치 수는 다음의 형태와 같다.
fib(n) = fib(n-2) + fib(n-1)
그래서 피보나치를 사용하여 풀어보고자 하였다.
초기값으로는
jump1 = fib(1) = 1
jump2 = fib(2) = 2
answer는 fib(2)로 초기화 시켰다.
n = 1일 때 1을 바로 반환, n = 2일 때 2를 바로 반환하고
for 반복문을 n = 3 이상으로 하여 f(3)부터 계산하였다.
이후 계산된 마지막 값에 1234567을 나눈 나머지를 리턴하였다.
'Coding Test > JavaScript' 카테고리의 다른 글
[프로그래머스 Level 1] 명예의 전당 (1) (JavaScript) (0) 2024.11.25 [프로그래머스 Level 1] [1차] 비밀지도 (JavaScript) (0) 2024.11.25 [프로그래머스 Level 2] 귤 고르기 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 숫자의 표현 (JavaScript) (0) 2024.11.24 [프로그래머스 Level 2] 카펫 (JavaScript) (0) 2024.11.04