문제 설명
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
제한사항
2 < common의 길이 < 1,000 -1,000 < common의 원소 < 2,000 common의 원소는 모두 정수입니다. 등차수열 혹은 등비수열이 아닌 경우는 없습니다. 등비수열인 경우 공비는 0이 아닌 정수입니다.
나의 코드
class Solution {
public int solution(int[] common) {
int answer = 0;
if(common[1]==common[0]+1) {
answer = common[common.length-1]+1;
} else {
answer = common[common.length-1]*2;
}
return answer;
}
}
처음에 아무 생각없이 입출력 예
만 보고 공차나 공비를 1과 2로 두고 짜서 실패 😅
class Solution {
public int solution(int[] common) {
int answer = 0;
int d = 0;
int r = 0;
if((common[1]-common[0]) == (common[2]-common[1])) {
d = common[1]-common[0];
answer = common[common.length-1]+d;
} else {
r = common[1]/common[0];
answer = common[common.length-1]*r;
}
return answer;
}
}
바로 수정해서 통과! 공차를 d
, 공비를 r
로 선언하여 조건문을 통해 문제 해결 :)
다른 사람 코드
class Solution {
public int solution(int[] common) {
int answer = 0;
int x = common[1] - common[0];
int y = common[2] - common[1];
if (x == y) {
answer = common[common.length - 1] + y;
} else {
answer = common[common.length - 1] * common[2] / common[1];
}
return answer;
}
}
느낀 점
처음엔 문제를 제대로 안읽고 입출력 예시만 보고 코드를 짜서 바로 실패했지만, 다시 읽고 바로 풀 수 있었던 문제였다. 정답률에 비해 어렵지 않았던 문제!
다른 사람 코드처럼 변수를 연속되는 두 원소값의 차이로 둬서 같을 때 공차수열 적용, 다를 때 공비수열로 적용해서 풀 수도 있었다.