괄호 9012

PublicMinsu·2022년 11월 29일
0

문제

접근 방법

프로그래머스에도 나왔던 문제이다.
그래서 이번에는 스택으로 풀려 했다... 하지만 풀려고 코드를 적다 보니 굳이 그래야 하나.. 싶었다.
똑같이 숫자 세는 방식으로 했다. (어차피 스택과 비슷한 원리라고 생각한다.)

코드

#include <iostream>
#include <string>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i)
    {
        int count = 0;
        string line, output = "YES";
        cin >> line;
        for (char c : line)
        {
            if (c == '(')
                count++;
            else
            {
                count--;
                if (count < 0)
                {
                    output = "NO";
                    break;
                }
            }
        }
        if (count > 0)
            output = "NO";
        cout << output << '\n';
        
    }
    return 0;
}

풀이

문제가 발생하는 이유는 )이 (보다 많거나 끝난 시점에서 (이 많을 때이다. (의 개수를 세워주며 )이 나타나면 감소시켜주고 0 이하일 경우 )이 (보다 많다는 뜻이므로 NO를 출력하게 해주며 문자열을 다 돌았는데도 (이 남았다면 문제가 있다는 뜻이므로 NO를 출력하게 해준다.
실수로 답안 제출에 예제 입력 1을 입력해버렸다... 이러면 틀린 문제가 되는 건가?

profile
연락 : publicminsu@naver.com

0개의 댓글