#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer;
for (int n : arr) {
if (answer.size() == 0 || answer[answer.size() - 1] != n)
answer.push_back(n);
}
return 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를 사용하면 컨테이너 내에서 중복된 원소를 지울 수 있다!
- unique(): 연속된 중복 원소를 제거하고 새로운 끝 반복자(end)를 반환
- 배열의 크기 변화 ❌
- 중복이 제거된 원소들이 앞쪽으로 이동, 나머지 원소들은 기존의 배열에서 유지됨
ex){1, 1, 2, 2, 3, 3, 4, 5, 5}→{1, 2, 3, 4, 5, ?, ?, ?, ?}
: 주어진 값을 컨테이너 내에서 실제로 삭제하고, 공백을 채우기 위하 삭제한 값 뒤의 원소들을 앞으로 당겨옴
사용 방법 01
vec.erase(삭제할 원소의 주소);
// 예시
vec.erase(vec.begin() + i);
사용 방법 02
vec.erase(삭제 범위의 시작 주소, 삭제 범위의 끝 주소); // 끝은 삭제 포함 X
// 예시
vec.erase(vec.begin(), vec.begin() + i);
: 주어진 값을 컨테이너 내에서 삭제(를 가장한 덮어쓰기)하고 마지막 인덱스 + 1 (end())을 반환