[백준] 9012번 : 괄호 / 파이썬 / 자료구조 / 스택

ChaeYuuu·2024년 7월 11일

Algorithm

목록 보기
2/7


자료구조 / 스택에 해당하는 '9012:괄호' 문제이다.


💡 정답 코드

stack=[]

t = int(input())
for _ in range (t):
    data = input()
    isVPS=True
    for char in data:
        if char=='(':
            stack.append(char)
        elif char==')':
            if stack:
                stack.pop()
            else:
                isVPS=False
                break
            
    # 다 처리한 후에 스택에 남아있는게 있으면 vps가 아님
    if stack:
        isVPS=False
    
    if isVPS:
        print("YES")
    else:
        print('NO')
    
    stack.clear()

📚 해결 과정

처음에 단순히 괄호의 짝만 맞으면 되는줄 알고 '(' 괄호의 개수와 ')' 괄호의 개수를 비교하여 같으면 YES를, 다르면 NO를 출력하는 코드를 작성하였는데 해당 문제에서는 VPS여부를 판단해야했다.

  1. stack 자료 구조를 이용
  2. 입력되는 값과 다음 값을 비교하여 stack에서 pop을 해줌
  3. 만약 스택이 비어있거나 ')' 값이 먼저 들어온다면 VPS 조건이 만족되지 않음을 이용

  • 문제를 푸는 데에 급급해서 제대로 읽지 않고 다급하게 하다보니 애먼 시간을 쓰는 점을 고치기 위해 차분히 문제부터 분석하고 코드를 작성하자
    -> 무작정 키보드에 손 올리지 않기!
  • 스택 말고 다른 자료구조로 풀리는 알고리즘이 많으니 자료구조 개념에 대해 정리도 다시 해야겠다
profile
아무것도 머르게떠염

0개의 댓글