프로그래머스 Lv 1. 12906 c++ 같은 숫자는 싫어요

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

 

#include <bits/stdc++.h>
using namespace std;

vector<int> solution(vector<int> arr) 
{
    vector<int> answer;
    int t=-1;
    for(auto c: arr){
        if(t!=c){
            t=c;
            answer.push_back(c);
        }
    }
    return answer;
}

 

원소들을 순회하면서 요건을 충졸할때에만 answer에 넣어주는 식으로 구현했다. 

다른 사람의 풀이중에서, 가장 추천을 많이 받은것을 확인해보니까, 

#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

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

    arr.erase(unique(arr.begin(), arr.end()),arr.end());

    vector<int> answer = arr;
    return answer;
}

이런식으로 중복된 원소를 제거하는 방법으로 erase와 unique를 사용하는 풀이를 한게 가장 많은 추천을 받았다. 

이 방법 분명 여러번 사용해본 방법인데 이 방법을 떠올리지 못하다니 조금 아쉽다. 다음에는 한번 이 방법도 같이 떠올려 보도록 하자. 

 

위 문제의 경우 효율성까지 체크하는데, 효율성 부분에서는 차이는 없다. 

 

  Comments,     Trackbacks