[프로그래머스] LEVEL1 : 같은 숫자는 싫어 C++ _ 미완

    반응형

    #INFO

    문제 이름 : 같은 숫자는 싫어

    난이도 : LEVEL1

    문제 출처 : 코딩테스트 연습 - 같은 숫자는 싫어 | 프로그래머스 (programmers.co.kr)

     

    코딩테스트 연습 - 같은 숫자는 싫어

    배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

    programmers.co.kr


    #SOLVE

    _1 for loop 풀이

    단순 for 반복문을 이용한 풀이이다.

    i번째 원소와 i-1번째 원소가 다를 경우 answer 벡터에 i번째 원소를 푸시하는 방식이다. 단, arr의 첫 번째 원소는 미리 answer 벡터에 푸시해 두어야 한다.

    #include <vector>
    #include <iostream>
    using namespace std;
    
    vector<int> solution(vector<int> arr) 
    {
        vector<int> answer; 
        answer.push_back(arr[0]);
        for(int i = 1; i < arr.size(); i++){
            if(arr[i-1] != arr[i]) answer.push_back(arr[i]);
        }
        return answer;
    }

     

    _2 unique function 풀이

    <Algorithm> 헤더에 포함된 unique 함수를 사용하면 간단하게 풀이할 수 있다.

    unique 함수는 자료구조 내에서 연속된 원소를 제거해준다.

    #include <vector>
    #include <iostream>
    #include <algorithm> // to use unique
    using namespace std;
    
    vector<int> solution(vector<int> arr) 
    {
        // unique begin ~ end 연속 중복 원소 제거
        // erase 중복되는 지점 첫 이터레이터 ~ arr.end(마지막 이터레이터) 제거
        arr.erase(unique(arr.begin(), arr.end()), arr.end());
        vector<int> answer = arr;
        return answer;
    }

     

    반응형

    댓글

    Designed by JB FACTORY