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

lsh235·2024년 12월 2일
0

CodingTest

목록 보기
19/31

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12973

핵심

stack을 이용하여 순서대로 문자열 삽입.
문자열 삽입시에 공백인지 여부와 상단이 현재 넣으려는 값과 일치하는지 확인.
같다면 추가하지않고 상단의 값을 제거.

전부 반복 후에 값이 남아 있다면 0 아니면 1


#include <iostream>
#include <stack>
#include <string>

using namespace std;

int solution(string s) {
    stack<char> charStack;

    for (char c : s) {
        // 스택이 비어있지 않고 최상단 문자와 현재 문자가 같다면
        if (!charStack.empty() && charStack.top() == c) {
            charStack.pop(); // 최상단 문자 제거
        } else {
            charStack.push(c); // 현재 문자 스택에 추가
        }
    }

    // 스택이 비어있으면 성공적으로 짝지어 제거한 것
    return charStack.empty() ? 1 : 0;
}

0개의 댓글