[lv.0] 다음에 올 숫자 | 프로그래머스
[lv.0] 다음에 올 숫자 | 프로그래머스
📋 [ 프로그래머스 ] 시리즈 몰아보기 (17)
✏️ (lv.0) : 다음에 올 숫자
등차수열/등비수열이 common이 주어질 때 마지막 원소 다음으로 올 숫자를 return하라
- 등차수열/등비수열이 아닌 경우는 없다.
- 2 < common의 길이 < 1000
- -1000 < common의 원소 < 1000
- 등비가 0인 등비수열은 주어지지 않는다.
예외처리를 할 필요가 없기 때문에 등차수열인지 등비수열인지 판단한 후 case에 맞는 solution을 작성한다.
등비수열과 등차수열간에 원소가 겹치는 상황을 고려하여 지속적으로 원소간의 규칙을 검사하여 최종적으로 answer을 return할 수 있도록 한다.
- 반복문을 이용해 계속해서 계산을 진행토록 한다.
(new!)위에서 말한 예외상황은 일어나지 않는다.
- 공차가 0인 등차수열 = 공비가 1인 등비수열이기 때문에 2번 원소와 1번 원소의 차이값 만으로 판별할 수 있다.
1 | // 최초로 제출한 solution |
2 | function solution(common) { |
3 | var answer = 0; |
4 | var temp = [(common[1] / common[0]), (common[1] - common[0])]; |
5 | |
6 | for (i=2; i<common.length; i++) { |
7 | if (common[i-1] * temp[0] == common[i]) { |
8 | answer = common[i] * temp[0]; |
9 | } else if (common[i] - temp[1] == common[i-1]) { |
10 | answer = common[i] + temp[1]; |
11 | } |
12 | } |
13 | |
14 | return answer; |
15 | } |
16 | |
17 | // 개선된 solution |
18 | function bestSolution(common) { |
19 | if (common[2] - common[1] == common[1] - common[0]) { |
20 | return common.pop() + common[1] - common[0] |
21 | } else { |
22 | return common.pop() * (common[1] / common[0]); |
23 | } |
24 | } |
25 | /* 해당 solution이 가능한 이유 |
26 | : 예외상황인 공차가 0인 등차수열이 공비가 1인 등비수열과 |
27 | 결과값이 같기 때문 |
28 | */ |
# 프로그래머스
# JS
# javascript
# 코딩테스트
# 알고리즘
# math
👨💻 관련 포스트
[lv.1] 개인정보 수집 유효기간
[lv.1] 개인정보 수집 유효기간
프로그래머스 lv.1 개인정보 수집 유효기간 풀이 with javascript. 해당 문제에서 한달은 28일로 고정이다. 따라서 today와 privacies 각 원소(개인정보)의 날짜를 년, 월, 일에 각 단위에 해당하는 수 * 28을 수행하여 일 단위로 변환한 후 terms에 해당하는 수를 더해 문제를 해결한다.
2023-05-30
[lv.1] 성격 유형 검사하기 | 프로그래머스
[lv.1] 성격 유형 검사하기 | 프로그래머스
프로그래머스 lv.1 성격 유형 검사하기 풀이 with javascript. javascript의 객체를 이용해 성격 유형(이하 MBTI)별 획득 점수를 기록하고 MBTI의 value를 비교해 문제를 해결한다.
2023-06-01
[lv.2] 주차 요금 계산 | 프로그래머스
[lv.2] 주차 요금 계산 | 프로그래머스
프로그래머스 lv.2 주차 요금 계산 풀이 with javascript. javascript의 객체를 이용해 차량의 입/출차 시간을 기록, 해당 객체를 순회하며 주차시간을 주어진 요금표에 맞게 정산하는 것으로 문제를 해결한다.
2023-06-04
💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!