LeeTaes 공부노트

[프로그래머스/C++ 문제 풀이] Lv. 0 - 다음에 올 숫자 본문

코딩테스트/프로그래머스 (Lv. 0)

[프로그래머스/C++ 문제 풀이] Lv. 0 - 다음에 올 숫자

리태s 2024. 6. 25. 14:50
728x90
반응형

문제 설명

등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.

제한 사항

  • 2 < common의 길이 < 1,000
  • -1,000 < common의 원소 < 2,000
    • common의 원소는 모두 정수입니다.
  • 등차수열 혹은 등비수열이 아닌 경우는 없습니다.
  • 등비수열인 경우 공비는 0이 아닌 정수입니다.

입출력 예

 

common result
[2, 4, 8] 16
[1, 2, 3, 4] 5

 

입출력 예 #1

  • [1, 2, 3, 4]는 공차가 1인 등차수열이므로 다음에 올 수는 5이다.

입출력 예 #2

  • [2, 4, 8]은 공비가 2인 등비수열이므로 다음에 올 수는 16이다.

문제 풀이

이번 문제는 입력받은 수열을 보고 등비수열인지 등차수열인지를 확인하면 되는 간단한 문제입니다.

 

등차수열의 경우 증가되는 공차가 항상 일정하므로,

1번째 요소와 2번째 요소의 차가 3번째 요소와 4번째 요소의 차와 동일한지 확인하여 체크 가능하며,

동일하지 않다면 이는 등비수열이기에 결과를 구해주는 방식으로 해결하였습니다.

정답 코드

더보기
#include <string>
#include <vector>

using namespace std;

int solution(vector<int> common) {
    int answer = 0;

    // 등차수열인지 체크하기
    if (common[1] - common[0] == common[2] - common[1])
    {
        // 등차수열이므로 해당 차이를 마지막 결과물에 더해주도록 합니다.
        int verse = common[1] - common[0];
        answer = common[common.size() - 1] + verse;
    }
    else
    {
        // 등비수열이므로 해당 공비를 마지막 결과물에 적용시켜주도록 합니다.
        int ratio = common[1] / common[0];
        answer = common[common.size() - 1] * ratio;
    }


    return answer;
}
728x90
반응형