반갑습니다!

[프로그래머스] 짝지어 제거하기 본문

알고리즘 문제 풀이

[프로그래머스] 짝지어 제거하기

김덜덜이 2020. 4. 3. 22:30
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

풀이

stack을 이용하여 해결하였다.

  1. stack이 비어있으면 문자를 push한다.
  2. stack.top()과 현재 문자가 같으면 pop한다.
  3. 1, 2의 경우가 아니면 문자를 push한다.

문자열의 탐색이 끝나고 stack이 비어있으면 1, stack이 차있으면 0을 반환한다.

풀이

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

int solution(string str)
{
    int answer = 0;
    stack<char> s;
    for (char c : str) {
        if (s.empty()) s.push(c);
        else if (s.top() == c) s.pop();
        else s.push(c);
    }
    if (s.empty()) answer = 1;
    return answer;
}