Level 1. 같은 숫자는 싫어
unique() 함수는 양옆의 원소를 비교하여 중복 원소들을 끝으로 몰아 놓는다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr)
{
arr.erase(unique(arr.begin(), arr.end()), arr.end());
return arr;
}
스택을 이용해 최초 원소를 삽입하고 중복 원소는 삽입하지 않으며 새로운 원소가 나오면 pop() 후 push()한다.
문제 유형에 <스택/큐>라고 나와있어서 스택을 사용해봤는데 사실 사용하지 않아도 된다.
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
vector<int> solution(vector<int> arr)
{
stack<int> stck;
vector<int> answer;
for (int e : arr)
{
if (stck.empty())
{
stck.emplace(e);
answer.emplace_back(e);
}
else if (stck.top() != e)
{
stck.pop();
stck.emplace(e);
answer.emplace_back(e);
}
}
return answer;
}
어차피 스택에는 1개의 원소만 저장되므로 그냥 int 변수 1개를 사용해도 된다.
#include <iostream>
#include <vector>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer;
int t = -1;
for (int e : arr)
{
if (t == -1 || t != e)
{
t = e;
answer.emplace_back(t);
}
}
return answer;
}
'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글
Level 1. 크기가 작은 부분 문자열 (0) | 2023.02.12 |
---|---|
Level 1. 삼총사 (0) | 2023.02.11 |
Level 1. 문자열 내 p와 y의 개수 (0) | 2023.02.09 |
Level 0. 유한소수 판별하기 (0) | 2023.02.08 |
Level 0. 소인수분해 (0) | 2023.02.07 |