안녕 세상아,

[프로그래머스/c++] Lv1 같은 숫자는 싫어 본문

프로그래머스

[프로그래머스/c++] Lv1 같은 숫자는 싫어

돈 많은 백수가 되고싶다 2024. 8. 20. 13:26

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 만약 주어진 arr[i]가 arr[i-1]와 같으면 continue해서 넘어간다. 

2. 같지 않으면 answer.push_back(arr[i-1]) 을 한다.

3. 이렇게 되면 마지막 arr이 들어가지 않으니까 마지막에 추가해준다. 

 

아래와 같은 코드가 나오는데 쓸데없이 복잡한 느낌 ㅎ...찾아보니까 unique erase 사용해서 한줄로 끝내는 코드가 있더라구.. 

#include <vector>
#include <iostream>

using namespace std;

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

    for(int i = 1;i < arr.size(); i++){
        if(arr[i] == arr[i-1]){
            continue;
        }
        else{
            answer.push_back(arr[i-1]);
        }
    }
    answer.push_back(arr[arr.size()-1]);
    
    return answer;
}

 

아래 코드가 unique erase를 사용한 간단한 코드!

https://hello-world-cpp.tistory.com/129

 

[c++/벡터] 벡터의 중복 제거 (unique, erase)

벡터에서 간단하게 중복을 제거하는 방법이 있다. sort의 erase와 unique를 사용하면 된다. 이를 사용하기 위해서는 헤더에 algorithm을 추가해주면 된다.  벡터 하나를 만든 후 중복 숫자를 벡터에

hello-world-cpp.tistory.com

 

#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;
}