문제
풀이
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer(1,arr[0]);
for(int i=1; i<arr.size(); i++){
if(answer.back() != arr[i]) answer.push_back(arr[i]);
}
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;
}
위와 같이 unique를 사용하면 같은 결과를 가져올 수 있었다.
unique 함수
- vector 배열에서 중복되지 않는 원소들을 앞에서부터 채워나가는 함수이다.
- algorithm 헤더에 존재한다.
- 중복되지 않는 원소들을 앞에서부터 채워나가기 때문에 나머지 뒷부분에는 원래 vector 원소 값이 존재한다.
erase 함수
- erase 함수는 vector 배열에서 특정 원소를 삭제하는 함수이다.
- v.erase(v.begin()+s, v.begin()+e) 명령어를 입력하면 [s,e) 원소가 삭제된다.
arr.erase(unique(arr.begin(), arr.end()),arr.end());
- unique가 끝나면, vector의 쓰레기 값의 첫 번째 위치를 반환하기 때문에, 위의 함수를 사용함으로써 중복된 숫자를 제거한 벡터 값을 얻을 수 있다.
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스]문자열 내 마음대로 정렬하기 / multimap (0) | 2022.02.11 |
---|---|
[프로그래머스]스택/큐 - 주식가격 (0) | 2022.02.08 |
[프로그래머스] 부족한 금액 계산하기 (0) | 2022.02.07 |
[프로그래머스]최소직사각형 (0) | 2022.02.05 |
[프로그래머스] 2016년 (0) | 2022.02.04 |