문제


괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’와 ‘)’ 만으로 구성되어 있는 문자열이다. 

이 괄호 문자열을 입력받고 ‘(’ 와 ‘)’ 가 모두 맞물리면 "YES" 틀리면 "NO"를 출력하면 되는 문제이다

 

문제 해결을 위한 준비물


  • string - 문자열을 입력받아야 함
  • ranged-based for문 - 입력된 문자열을 문자 하나하나 조회하기 위함
  • stack - 괄호 문자열이 모두 맞물린 지 확인하기 위함

완성된 코드


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

using namespace std;

int main()
{
    int count;
    
    cin >> count;
    
    for(int i = 0; i < count; i++)
    {
        string temp;
        stack<char> bracketSt;

        cin >> temp;

        for(char& bracket : temp)
        {
            if(bracket == '(')
                bracketSt.push(bracket);
            else
            {
                if(!bracketSt.empty()) 
                    bracketSt.pop(); 
                else 
                {
                    bracketSt.push(bracket);
                    break;
                }
            }
        }

        string message = bracketSt.empty() ? "YES" : "NO";
        cout << message << endl;
    }

    return 0;
}

 

풀이


풀이..라고 할 게 없다

그저 스택을 잘 활용했다는 게 풀이인 것이다

 

처음엔 스택 대신 정수를 활용해서 괄호 문자를 확인했고, 스택을 썼어도 그저 저장공간으로써 비효율적으로 사용했다 아직은 한참 부족한 것 같다 

 

 

 

'프로그래밍 문제집 > 백준' 카테고리의 다른 글

1152번-단어의 개수  (0) 2022.01.20
1463번-1로 만들기  (0) 2022.01.19
12865번-평범한 배낭  (0) 2022.01.17
10773번-제로  (0) 2022.01.17
1920번-수 찾기  (0) 2022.01.17

+ Recent posts