오늘의 알고리즘
[C++]2017 팁스타운 짝지어 제거하기(프로그래머스 2레벨)
하늘하늘 .
2022. 2. 10. 16:38
#include<string>
#include <stack>
using namespace std;
int solution(string s)
{
stack<char> sStack = {};
int iNum = 0;
int iSize = s.size();
char cStack = {};
// 시작 전 처음꺼 입력
sStack.push(s[0]);
while (iNum + 1 < iSize)
{
// Stack이 비어있지 않으면 처음꺼를 입력
if (sStack.size())
cStack = sStack.top();
// 다음꺼랑 같다면 빼고 다르다면 다시 입력
if (cStack == s[iNum + 1])
sStack.pop();
else
sStack.push(s[iNum + 1]);
// 다시 같다가 입력될 수 있으니까 삭제
cStack = '\0';
++iNum;
}
return sStack.size() ? 0: 1;
}
처음에는 선형탐색으로 풀었다가 효율성에서 탈락
그래서 스택으로 했더니 합격! 효율성은 맨날 떨어지는데... 좀 생각해보고 풀어야할 듯!