본문 바로가기

알고리즘 삽질장

[BOJ] 9012번 - 괄호

반응형


문제설명

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

 

9012번: 괄호

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

www.acmicpc.net

사고과정

  • 예전에 풀어본 괄호관련 문제를 풀어본 게 도움이 되었다.
  • 핵심 풀이법은 다음과 같다.
  • 1. ( 가 먼저나와야 함을 인지! ( 가 나올 땐 +1 하고 ) 가 나오면 -1을 한다.
  • 이 때, )가 나오고 -1을 하기 전에 count 값이 이미 0이 된 상태라면 올바른 괄호 문자열 상태가 아니다. 예를 들면 " ( ) ) " 이런 경우! ) 가 나오고 연속으로 ) 가 등장한 경우!
  • 다른 경우는 괄호 문자열 하나씩 loop를 다 돌았을 때 count 값이 0이 아니면 올바른 괄호 문자열 상태가 아니다. 예를 들면 " ( ) ( ( ( " 같은 경우가 해당한다.
  • 마지막으로 모든 문자열을 다 돌고 난후에 count 값이 0이라면 그 때는 올바른 괄호 문자열이다.

풀이

for tc in range(int(input())):
    string = input()
    count = 0
    flag = False
    for s in string:
        if s == '(':
            count += 1
        else:
            if count == 0:
                print('NO')
                flag = True
                break
            count -= 1
    if flag:
        continue
    if count != 0:
        print('NO')
    else:
        print('YES')
반응형

'알고리즘 삽질장' 카테고리의 다른 글

[BOJ] 1406번 - 에디터  (0) 2021.10.24
[BOJ] 1874번 - 스택 수열  (0) 2021.10.23
[BOJ] 9093번 - 단어 뒤집기  (0) 2021.10.23
[BOJ] 10828번 - 스택  (0) 2021.10.23
[이코테] BFS - 블록 이동하기  (0) 2021.10.23