맛동산이

(백준 9012 c++) 괄호 본문

알고리즘/백준

(백준 9012 c++) 괄호

진ddang 2022. 7. 5. 00:22

문제

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

정답코드

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

using namespace std;

int main()
{
    int m;
    cin >> m;
    for (int c = 0; c < m; c++)
    {
        string n;
        cin >> n;
        stack<char> arr1;
        for (int a = 0; a < n.length(); a++)
        {
            if (n[a] == '(')
            {
                arr1.push(n[a]);
            }
            else
            {
                if (arr1.empty())
                {
                    arr1.push(n[a]);
                }
                else if (arr1.top() == '(')
                {
                    arr1.pop();
                }
            }
        }
        if (!arr1.empty())
        {
            cout << "NO"
                 << "\n";
        }
        else
        {
            cout << "YES"
                 << "\n";
        }
    }
}

해설

기본적인 스택문제, 큐로 풀어도 상관없음

근데 나는 이거 풀때 좀 헷갈렷던게 만약에 ))(( 이렇게 들어오는것도 처리하게 되면 어떻게 하지? 라는 생각을 하게됨.

이거는 내가 볼때 ((()))(()) 이런 vps 처리를 하는 전제조건이 있기 때문에 ))) 이렇게 들어오는 입력값을 배제 하고 푼는 것 같음

그리고 처음에 나는 그래서 )) 와 (( 이런거를 다 고려한 코드를 짯는데 segmentation fault가 남, 왜그런지 아직 잘 모르겠음

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

(백준 10816 c++) 숫자카드 2  (0) 2022.07.07
(백준 2164 c++) 카드2  (0) 2022.07.05
(백준 1764) 듣보잡  (0) 2022.06.29
(백준 1269) 대칭 차집합  (0) 2022.06.29
(백준 14425) 문자열 집합  (0) 2022.06.27