[알고리즘 문제 풀이][파이썬] 백준 9012번: 괄호

염지현·2022년 3월 16일
0

BOJ

목록 보기
4/22

백준 9012번 문제 링크: https://www.acmicpc.net/problem/9012

📑 문제 설명

괄호 문자열이 주어졌을 때, '('와 ')' 괄호의 모양이 올바르게 배치되어 있는지 확인하는 프로그램을 작성
입력: 테스트 케이스 수, 테이트 케이스 수에 따른 괄호 문자열
출력: 각 테스트 케이스에 대해 주어진 괄호 문자열이 VPS인지, 아닌지 출력

💡 문제 해결 방법

stack 구조를 사용하여 해결하는 문제.
입력은 '('와 ')'로 구성된 문자열이기 때문에
1) '(' 일 경우, stack에 push.
2) ')' 일 경우,
- stack이 비어 있다면 --> 옳지 못한 괄호 문자열
- stack이 채워져 있다면 --> stack pop
3) 1), 2)를 거쳐서 최종적으로 나온 stack 원소 수가 1개 이상일 경우, '('와 ')' 짝이 맞지 않음을 의미 --> 옳지 못한 괄호 문자열
4) 1), 2)를 거쳐서 최종적으로 나온 stack 원소 수가 0개 이상일 경우, '('와 ')' 짝이 맞음을 의미 --> 옳은 문자열

💻 코드

def check_VPS(ps):
    temp_stack = list()
    for i in range(len(ps)):
        if (ps[i] == ')'):
            if (len(temp_stack) == 0):
                print("NO")
                return
            else:
                temp_stack.pop()
        elif (ps[i] == '('):
            temp_stack.append(ps[i])

    if (len(temp_stack) == 0):
        print("YES")
        return
    else:
        print("NO")
        return

if __name__ == '__main__':
    T = input()
    for i in range(int(T)):
        ps = input()
        check_VPS(ps)

💟 추가적으로 알게 된 점

  • return의 중요성...
    • return 안 써주면 YES, NO가 와랄라 되어 버림

0개의 댓글