다음에 올 숫자

문제 링크

다음에 올 숫자

분석

등차수열 혹은 등비수열이 주어질 때, 마지막 원소의 다음으로 올 숫자를 구해 반환해야합니다.

등비수열인 경우 공비는 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)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기