최대 1 분 소요

Question

Q


Solution

  • for루프로 string s에 대해 문자를 하나씩 확인한다.
  • stack.top()과 현재 s[i]를 비교하여 틀리면 push, 다르면 pop 한다.
  • stack이 empty면 1을 출력, empty가 아니면 0을 출력한다.

Cord

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

using namespace std;

int solution(string s)
{
    int answer = 0;

    // 문자 하나씩 조건에 따라 data에 push 또는 pop
    stack<char> data;
    for (int i = 0; i < s.size(); i++)
    {
        // 1. 가장 최근에 data에 저장된 문자와 현재 s[i]의 문자를 비교
        // 2. 서로 다르면 push, 같으면 pop
        if (data.empty() || data.top() != s[i]) { data.push(s[i]); }   
        else { data.pop(); }
    }

    if (data.empty()) { answer = 1; }

    return answer;
}

int main()
{
    string s = { "baabaa" };

    int answer = solution(s);
    cout << answer;

    return 0;
}

Result

Result