PS/Baekjoon Online Judge

[백준 9012] 괄호 [C]

kimyoungrok 2021. 7. 10. 00:50

백준 - 9012


풀이

입력되는 괄호가 쌍을 이루는지 묻는 문제이다. 괄호의 개수가 같아도 항상 쌍을 이루는 것이 아님을 유의하자.

ex) : ( ) ) ) ( ( ( ) 

 

stack 구조에서 top변수를 통해 몇 개의 값을 가지고 있는지 알 수 있었다.

이번 문제에서도 top변수를 이용해 '('와 ')'의 구성비를 알아내 문제를 해결할 수 있다.

  • '('일 때 top++, ')'일 때 top-- 를 하여 stack 구조를 이용한다. (top == 0 일 때 VPS이다.)
  • '('가 ')'보다 적으면 VPS가 아니고 (top == -1), '('가 ')' 보다 많을 때도 VPS가 아니다.(top > 0)
  • 따라서 , top가 0이 아니면 VPS가 아님을 알 수 있다.

소스코드

#include <stdio.h>
#include <string.h>
int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        char stack[51], top = 0;
        scanf("%s", stack);
        for (int i = 0; i < strlen(stack); i++) {
            top += (stack[i] == '(' ? 1 : -1);
            if (top < 0)
                break;
        }
        puts(top ? "NO" : "YES");
    }
}

출처

 

9012번: 괄호

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

www.acmicpc.net

 

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 2675] 문자열 반복 [C]  (0) 2021.07.10
[백준 2577] 숫자의 개수 [C]  (0) 2021.07.10
[백준 2562] 최댓값 [C]  (0) 2021.07.09
[백준 2557] Hello World [C]  (0) 2021.07.09
[백준 2475] 검증수 [C]  (0) 2021.07.09