티스토리 뷰
안녕하세요.
오늘은 프로그래머스 난이도 2인 '피보나치 수' 라는 코테의 주관적인 소스 코드를 공유하고자 합니다!
난이도 2인것 치고는 자주 나와서 쉽게들 풀 수 있을거라 생각합니다!
문제 설명
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.
예를들어
F(2) = F(0) + F(1) = 0 + 1 = 1
F(3) = F(1) + F(2) = 1 + 1 = 2
F(4) = F(2) + F(3) = 1 + 2 = 3
F(5) = F(3) + F(4) = 2 + 3 = 5
와 같이 이어집니다.
2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.
제한 사항
n은 2 이상 100,000 이하인 자연수입니다.
입출력 예
n return
3 2
5 5
입출력 예 설명
피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.
우선 이 문제의 경우, 쉽게 작성할 수 있다고 생각하고 진행을 했었는데, 그냥 막연하게 F[i] = F[i-1] + F[i-2]로 계산을 진행했습니다!
하나의 반복문으로 작성을 해서 코드를 구현해보았습니다.
function solution(n) {
var arr = [0, 1]
for (var i = 2; i <= n; i++) {
arr[i] = (arr[i - 1]) + (arr[i - 2])
}
return arr.pop() % 1234567
}
근데 엥..?
??????? 이게 뭐야 이거 아니야?? 라고 생각을 했는데.. 혹시 뭔가 놓치고 있는게 아닌가? 하며 문제를 다시 읽어보니 'n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수' 라는게 눈에 띄었습니다..
혹시, 숫자가 너무 커서 그런가? 싶어서 a % n + b % n = (a + b) % n 을 사용해서 먼저 배열에 %를 한 값을 넣어보자 라는 생각을 하게 되었고 수정한 소스는 다음과 같습니다.
function solution(n) {
var arr = [0, 1]
for (var i = 2; i <= n; i++) {
arr[i] = (arr[i - 1] % 1234567) + (arr[i - 2] % 1234567)
}
return arr.pop() % 1234567
}
이렇게 하니까.. 너무나 잘되는 것..
다시한번 문제를 잘 읽어보자.. 라는 교훈을 얻을 수 있었따....
너무 어려운 코딩테스트..
'프로그래머스 > 난이도 2' 카테고리의 다른 글
[자바스크립트, js] 프로그래머스 기능개발 (0) | 2022.11.19 |
---|---|
[자바스크립트, js] 프로그래머스 구명보트 (0) | 2022.11.17 |
[자바스크립트, js] 프로그래머스 영어 끝말잇기 (0) | 2022.11.16 |
[자바스크립트, js] 프로그래머스 N개의 최소공배수 (0) | 2022.11.16 |
[자바스크립트, js] 프로그래머스 혼자 놀기의 달인 (0) | 2022.10.13 |
- Total
- Today
- Yesterday
- 프로그래머스 js
- 우아한 비동기
- 터미널 깃허브 계정 변경
- 나도이직시켜주세요...
- 깃허브 mac
- 코딩테스트
- JavaScript
- 난이도3
- react.suspense
- 프로그래머스
- mac 깃허브 계정 변경
- react.errorboundary
- Effective Component
- mac os 깃허브 계정 변경
- javascript THREE.js
- 난이도2
- Three.js
- 프로그래머스난이도3
- three
- 자바스크립트 three.js
- terminal 깃허브 계정 변경
- 리액트
- THREE.js 랜덤
- 유연한 컴포넌트
- react
- ErrorBoundary
- 깃허브 계정 변경
- 깃허브 계정 삭제
- JS
- 자바스크립트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |