알고리즘/프로그래머스 1단계
프로그래머스 - 배열 만들기 6 - C++
게임만드는학생
2023. 8. 6. 11:39
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 );
을 작성하면 된다.