Home BOJ - 9012 - 괄호
Post
Cancel

BOJ - 9012 - 괄호

BOJ - 9012 - 괄호

문제


9012번: 괄호

https://user-images.githubusercontent.com/71277820/162623962-5173ff1e-3cf9-424c-81e9-4600d2233a63.png

문제 개념


  • 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 주어진다.
  • 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다.
  • 각 테스트 데이터의 첫째 줄에는 괄호 문자열이 한 줄에 주어진다. 하나의 괄호 문자열의 길이는 2 이상 50 이하이다.

즉. 올바른 VPS 괄호 여닫이여야만 한다.

구현


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <vector>

using namespace std;

// (( )) (( ))
// 왼 오른의 비율을 따져 결과값 표츌 

int main()
{
    int num; 
    vector<string> OrderList; // input
    vector<string> answer;    // output
    cin >> num;    
    for(int i=0; i < num; i++)
    {
        string temp; 
        cin >> temp;
        OrderList.push_back(temp);
    }
    for(int i=0; i < OrderList.size(); i++)
    {
        int tmp = 0;
        for(int j=0; j < OrderList[i].size(); j++)
        {
            tmp += OrderList[i][j] == '(' ? 1 : -1;
            if(tmp < 0)
                break;
        }
        string result = tmp == 0 ? "YES" : "NO";
        answer.push_back(result);
    }
    for(auto el : answer)
        cout << el << endl; 
}

SOL


  • 스택 구조의 조건을 만들어 VPS를 판단한다.

    1
    
      tmp += OrderList[i][j] == '(' ? 1 : -1;
    
    • 단. ‘ ) ‘의 수 즉 tmp < 0 이면 조건문을 멈춰 VPS가 아님을 알린다.

Reference & 다른 PS 모음집


https://github.com/ggh-png/PS

This post is licensed under CC BY 4.0 by the author.