본문 바로가기
알고리즘/프로그래머스

[C++] 다음에 올 숫자

by parkkingcar 2023. 5. 23.

 

 

다음에 올 숫자

 

등차수열 혹은 등비수열 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

댓글