N

(프로그래머스 c++)짝지어 제거하기 본문

프로그래머스 알고리즘/2단계

(프로그래머스 c++)짝지어 제거하기

naeunchan 2020. 5. 20. 11:05
728x90
반응형

스택을 이용하여 풀면 쉽게 해결할 수 있다.

 

s.size()만큼 반복문을 돌면서 스택에 넣어주자.

만약 스택이 비어있거나 스택의 top이 현재 s[i]와 같지 않다면

스택에 s[i] 문자를 넣어주자..!

하지만 스택의 top이 s[i]와 같다면 pop()을 해주어 같은 문자를 제거하면 된다.

 

반복문을 다 돌게 되었을 때, 스택이 비어있다면 모든 문자를 짝지어서 제거했기 때문에 1을 반환,

비어있지 않으면 문자가 남아있다는 뜻이므로 0을 반환하면 된다..!

#include <iostream>
#include <string>
#include <stack>
using namespace std;

int solution(string s)
{
    int answer = 0;
    stack<char> stk;
    
    for(int i = 0; i < s.size(); i++)
    {
        if(stk.empty() || stk.top() != s[i])
            stk.push(s[i]);
        else
            stk.pop();
    }
    if(stk.empty())
        return 1;
    else
        return 0;
}
728x90
반응형