최대 1 분 소요

Question

Q


Solution

  • string s에 대해 for 루프를 돌린다. ‘(‘ 면 +1, ‘)’면 -1 을 한다. (수량이 0일때 ‘)’ 가 나오면 즉시 false를 반환하고 종료)
  • for 루프가 종료되고 수량이 0이 되면 괄호가 올바르게 짝지어진 것이라고 볼 수 있다.

Cord

#include<string>

using namespace std;

bool solution(string s)
{
    bool answer = true;
    int open = 0;
    
    // '(' 면 open을 증가하고 ')' 면 open을 감소시킨다.
    // open이 0이 되어야 올바르게 짝지어진 것이다.
    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] == ')')    // ')' 이고 '(' 없을 경우 false 반환하고 종료
        {
            if (open == 0) { return false; }
            else { open -= 1; }
        }
        else  // '(' 이면 수량 증가 
        {
            open++;
        }
    }
    
    // open 괄호에 대한 짝(close)이 맞춰지지 않으면 false
    if (open != 0) { answer = false; }
    
    return answer;
}

Result

Result