728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12906
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer;
for (int i = 0; i < arr.size(); i++)
{
if (answer.empty())
{
answer.emplace_back(arr[i]);
}
else {
if (arr[i] != answer.back())
{
answer.emplace_back(arr[i]);
}
}
}
return answer;
}
방법 2 . unique를 통한 해결
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr)
{
arr.erase(unique(arr.begin(), arr.end()), arr.end());
return arr;
}
unique 함수는 아래 참고
https://cplusplus.com/reference/algorithm/unique/
https://cplusplus.com/reference/algorithm/unique/
function template <algorithm> std::unique equality (1)template ForwardIterator unique (ForwardIterator first, ForwardIterator last);predicate (2)template ForwardIterator unique (ForwardIterator first, ForwardIterator last, BinaryPredicate pred); Remove con
cplusplus.com
vector<int> solution(vector<int> arr)
{
auto iter = unique(arr.begin(), arr.end());
arr.erase(iter, arr.end());
return arr;
}
int main() {
solution({ 1,1,3,3,0,1,1 });
}
위의 코드를 디버깅 해보면
unique함수를 통해 1,1,3,3,0,1,1이 1,3,0,1,0,1,1로 변경된 것을 볼 수 있다.
방법1, 2 모두 동일한 결과가 나왔다.
728x90
반응형
'개발일지 > 코딩테스트' 카테고리의 다른 글
[Programmers] 문자열 내림차순으로 배치하기 (C++) (0) | 2025.04.08 |
---|---|
[Programmers] 명예의 전당(1) (c++) (0) | 2025.04.08 |
[Programmers] 완주하지 못한 선수 (C++) (0) | 2025.04.03 |
[Programmers] 약수의 개수와 덧셈(C++) (0) | 2025.04.03 |
[Programmers] 옹알이(1) (c++) (0) | 2025.04.02 |