(7/23 - O)
https://school.programmers.co.kr/learn/courses/30/lessons/12906
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
구현1
벡터 내의 연속된 숫자만 삭제하면 된다.
stack(이하 s)에 arr의 요소들을 반복문을 통해 순서대로 집어넣는다. 집어넣을 때 s의 top과 집어넣을 요소가 같다면 continue 처리하면 끝.
코드1
#include <vector>
#include <iostream>
#include <stack>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer;
stack<int> s;
for (const auto& i : arr) {
if (s.empty()) {
s.push(i);
answer.push_back(i);
}
else {
if (s.top() != i) {
s.push(i);
answer.push_back(i);
}
}
}
return answer;
}
구현2
unique를 이용하여 중복 원소 제거
코드2
#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;
}
비교
도움 된 글
https://en.cppreference.com/w/cpp/algorithm/unique
std::unique - cppreference.com
(1) template< class ForwardIt > ForwardIt unique( ForwardIt first, ForwardIt last ); (until C++20) template< class ForwardIt > constexpr ForwardIt unique( ForwardIt first, ForwardIt last ); (since C++20) template< class ExecutionPolicy, class ForwardIt > F
en.cppreference.com
'알고리즘 > Programmers' 카테고리의 다른 글
[프로그래머스/C++] 게임 맵 최단거리 (0) | 2022.08.22 |
---|---|
[프로그래머스/C++] 피로도 (0) | 2022.07.22 |
[프로그래머스/C++] 주식 가격 (0) | 2022.07.18 |
[프로그래머스/C++] 여행 경로 (0) | 2022.07.16 |
[프로그래머스/C++] 카펫 (0) | 2022.07.16 |