다음에 올 숫자
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
원소의 값이 음수가 될 수 있기 때문에, 등차수열인 경우와 등비수열인 경우에 예외조건인 경우를 고려하였습니다.
1. 배열이 등차수열인 경우
2. 등비수열일 경우에
2-1. 공비가 양수인 경우
2-2. 공비가 음수인 경우
3. 원소가 모두 0인 경우
이렇게 조건을 나누어 원소 3개를 비교하였습니다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> common) {
int answer = 0;
if (common[1] - common[0] != common[2] - common[1]){ // 1번 경우
return common[common.size()-1] * (common[1] / common[0]);
}
else{
if((common[0] < 0 && common[1] > 0) || (common[0] > 0 && common[1]<0)){ // 2-2번 경우
return common[common.size()-1] * (common[1] / common[0]);
}
else if(common[0] == 0 && common[1]== 0){ // 3번 경우
return common[common.size()-1] * (common[1] / common[0]);
}
else // 2-1번 경우
return common[common.size()-1] + (common[1] - common[0]);
}
return answer;
}
이렇게 예외를 찾아서 문제를 풀 때, 예외를 하나라도 놓칠 경우 크게 문제풀이를 하는데 헤맬수 있어서 좋은 방법은 아닙니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[C++] 연속된 수의 합 (0) | 2023.05.24 |
---|---|
[C++] 치킨 쿠폰 (0) | 2023.05.23 |
[C++] 숫자 문자열과 영단어 (0) | 2023.05.23 |
[C++] 유한소수 판별하기 (0) | 2023.05.22 |
[C++] 문자열 밀기 (0) | 2023.05.22 |
댓글