이번 문제는 등차수열과 등비수열의 개념을 먼저 알아봐야 해서 해당 개념을 검색 해보고 풀었는데요.
간단히 말해서 등차수열은 [1,3,5,7,9] 와 같이 수들이 일정한 간격으로 증가되는 수열을 의미하고, 등비수열은 [2,4,8,16,32] 같이 수들이 일정한 비율로 증가되는 개념이었습니다.
이를 배열에 적용을 해보면 배열의 등차수열은 Arr[1] - Arr[0] 일 것이고, 등비수열은 Arr[1] / Arr[0]로 구할 수 있는 것이죠. 그래서 이를 활용해 다음 올 값을 구할 수 있었습니다.
function solution(common) { let nextValue = 0; // 다음 값 저장 변수 let intervalValue = 0; // 간격 값 저장 변수 if(common[1] - common[0] === common[2] - common[1]){ // 배열이 만약 앞의 간격과 그 다음의 간격이 일정한 수로 증가한 값이라면 intervalValue = common[1] - common[0]; // 간격은 등차수열로 저장 nextValue = common[common.length - 1] + intervalValue; // 다음 올 값은 배열의 마지막에서 간격을 더한 값 }else if(common[1] / common[0] === common[2] / common[1]){ // 배열이 만약 앞의 간격과 그 다음 간격이 일정한 비율로 증가한 값이라면 intervalValue = common[1] / common[0]; // 다음 올 값은 등비수열로 저장 nextValue = common[common.length - 1] * intervalValue; // 다음 올 값은 배열의 마지막 요소를 비율과 곱한 값 } return nextValue; // 정답 반환 }