본문 바로가기
개발일지/코딩테스트

[Programmers] 같은 숫자는 싫어 (c++)

by 쫌눈 2025. 4. 3.
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12906

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

방법 1

#include <vector>
#include <iostream>

using namespace std;

vector<int> solution(vector<int> arr)
{
    vector<int> answer;

    for (int i = 0; i < arr.size(); i++)
    {
        if (answer.empty())
        {
            answer.emplace_back(arr[i]);
        }
        else {
            if (arr[i] != answer.back())
            {
                answer.emplace_back(arr[i]);
            }
        }
    }

    return answer;
}

방법 2 . unique를 통한 해결

#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> arr)
{
    arr.erase(unique(arr.begin(), arr.end()), arr.end());
    return arr;
}

 

unique 함수는 아래 참고

https://cplusplus.com/reference/algorithm/unique/

 

https://cplusplus.com/reference/algorithm/unique/

function template <algorithm> std::unique equality (1)template ForwardIterator unique (ForwardIterator first, ForwardIterator last);predicate (2)template ForwardIterator unique (ForwardIterator first, ForwardIterator last, BinaryPredicate pred); Remove con

cplusplus.com

 

vector<int> solution(vector<int> arr)
{
    auto iter = unique(arr.begin(), arr.end());
    arr.erase(iter, arr.end());
    return arr;
}

int main() {
    solution({ 1,1,3,3,0,1,1 });
}

위의 코드를 디버깅 해보면

unique함수를 통해 1,1,3,3,0,1,1이 1,3,0,1,0,1,1로 변경된 것을 볼 수 있다.

 

방법1, 2 모두 동일한 결과가 나왔다.

728x90
반응형