등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
처음에는 등차수열 공식 a +(n - 1)d와 등비수열 공식 ar^(n-1)을 이용해 계산하려고 했다. 그런데 주어지는 수열 common이 등차인지 등비인지 체크하는 과정에서 더 쉬운 방법을 발견했다.
우선 common의 길이는 3 이상이다. 이에 따라 배열 인덱스 0, 1, 2를 활용해 등차인지, 등비인지 판단할 수 있다.
if문으로 분기한 후, 등차수열이라면 공차(d)를 구해야 했다. 이때 알려진 공식을 이용하는 대신 common[1] - common[0] 해주었다. 그렇게 배열 common의 마지막 원소에 공차를 더해줌으로써 정답을 return했다.
그리고 등비수열의 경우 공비(r)을 구하기 위해 common[1] / common[0] 해주었다. 그리고 마지막 원소에 공비를 곱해줌으로써 정답을 return 했다.
반복되는 코드가 많아 가독성이 좋지 않긴 해도 누구나 이해할 수 있는 코드이기 때문에 좋은 코드라는 생각이 들었다.
class Solution {
public int solution(int[] common) {
int answer = 0;
if(common[1] - common[0] == common[2] - common[1]){
int d = common[1] - common[0];
answer = common[common.length - 1] + d;
}else if(common[1] / common[0] == common[2] / common[1]){
int r = common[1] / common[0];
answer = common[common.length - 1] * r;
}
return answer;
}
}
