예를 들어, 문자열 S = baabaa 라면
b aa baa → bb aa → aa →
의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다.
#include <iostream>
#include<string>
#include<stack>
using namespace std;
int solution(string s)
{
int answer = -1;
stack<int> tmpStack;
for(char elem : s)
{
//스택이 비어있지 않다면
if(!tmpStack.empty())
{
char tmp = tmpStack.top();
//이전것과 같다면
if(tmp == elem)
{
//이전 알파벳 스택에서 제거하고 현재 인덱스도 넘어가면서 해결
tmpStack.pop();
continue;
}
}
//비어있거나 이전것과 같지 않다면 스택에 push
tmpStack.push(elem);
}
answer= tmpStack.empty() ? 1:0;
return answer;
}
스택이 확실히 붙어있는 부분 찾기나 중간 값을 제거하고 이전 데이터와 현재 데이터를 이어 붙일 때 활용하기 좋다는 생각이 들었다.