[프로그래머스][C++] 다음에 올 숫자
다음에 올 숫자
문제 링크
분석
등차수열 혹은 등비수열이 주어질 때, 마지막 원소의 다음으로 올 숫자를 구해 반환해야합니다.
등비수열인 경우 공비는 0이 아닌 정수입니다.
등차수열과 등비수열을 구분하여 마지막에 올 원소를 구하면 됩니다.
풀이
#include <vector>
using namespace std;
int solution(vector<int> common) {
int answer = 0;
int n = common.size();
// common의 크기는 항상 3 이상이므로, 해당 인덱스에 접근할 때 예외처리를 해주지 않아도 된다.
int a = common[0];
int b = common[1];
int c = common[2];
int different = b - a;
// 등차수열인 경우
if (c - b == different)
{
answer = common[n - 1] + different;
}
// 등비수열인 경우
else
{
// 공비를 계산하여 마지막에 올 값을 구한다.
answer = common[n - 1] * b / a;
}
return answer;
}
성능 요약
시간 복잡도는 $O(1)$입니다.
공간 복잡도는 $O(1)$입니다.
테스트 성능
테스트 1 〉 통과 (0.01ms, 4.14MB)
테스트 2 〉 통과 (0.01ms, 4.2MB)
테스트 3 〉 통과 (0.01ms, 4.18MB)
테스트 4 〉 통과 (0.01ms, 3.67MB)
테스트 5 〉 통과 (0.01ms, 4.14MB)
테스트 6 〉 통과 (0.01ms, 4.21MB)
테스트 7 〉 통과 (0.01ms, 4.14MB)
테스트 8 〉 통과 (0.01ms, 4.2MB)
테스트 9 〉 통과 (0.01ms, 4.21MB)
댓글남기기