⭐ Lv. 0 - 다음에 올 숫자
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
common | result |
---|---|
[1, 2, 3, 4] | 5 |
[2, 4, 8] | 16 |
입력으로 주어지는 common
의 길이가 최소한 3 이상이기 때문에 가장 앞 3개 원소를 기준으로 등비수열
인지 등차수열
인지 판단하자.
등비수열
과 등차수열
은 아래와 같이 구분하여 판단한다.
등비수열
a[2] / a[1] === a[1] / a[0]
등차수열
a[2] - a[1] === a[1] - a[0]
이를 이용하여 작성한 코드는 아래와 같다.
function solution(common) {
let answer = 0;
const isArithmetic = common[1] - common[0] === common[2] - common[1];
if(isArithmetic) answer = common[common.length - 1] + common[1] - common[0];
else answer = common[common.length - 1] * (common[1] / common[0]);
return answer;
}
🧐 해당 코드로도 통과는 했지만 더 간단하게 표현은 불가능할까?
다른 풀이를 참고하여 코드를 간략하게 변환하면 아래와 같이 해결이 가능하다.
const solution = c => c[2] - c[1] === c[1] - c[0] ? c.pop() + c[1] - c[0] : c.pop() * (c[1] / c[0]);