https://school.programmers.co.kr/learn/courses/30/lessons/181859
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr) {
vector<int> answer;
for(int i=0;i<arr.size();i++)
{
if(answer.size()==0)answer.push_back(arr[i]);
else if(answer[answer.size()-1]==arr[i])
{
// 마지막 원소 제거
answer.erase(answer.begin()+answer.size()-1);
}
else
{
answer.push_back(arr[i]);
}
}
if(answer.empty())answer.push_back(-1);
return answer;
}
설명
아주 간단한 문제이다.
조건만 보면 되는데
1. answer 배열이 비었으면 arr[i] 를 추가하고
2. answer 비어있지 않은데 answer의 마지막원소와 arr[i] 가 같다면 answer의 마지막원소를 제거하고
3. 그렇지 않다면 arr[i]를 추가한다.
여기서 원소를 제거하는 것이 생소할 수도 있다.
v.erase()
이 함수를 사용하면 된다.
v.erase(v.begin() + i);
i : (원하는 인덱스 번호)
예를들어 3번 인덱스를 없애고 싶으면
v.erase( v.begin() + 3 );
을 작성하면 된다.
'알고리즘 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 - 배열 조각하기 - C++ (0) | 2023.08.07 |
---|---|
프로그래머스 - 정사각형으로 만들기 - C++ (0) | 2023.08.07 |
프로그래머스 - 전국 대회 선발 고사 - C++ (0) | 2023.08.06 |
프로그래머스 - 수열과 구간 쿼리 2 - C++ (0) | 2023.08.06 |
프로그래머스 - 문자열 여러번 뒤집기 - C++ (0) | 2023.08.05 |