본문 바로가기
Algorithm/스택&큐&덱&힙

[백준] 9012번 괄호

by HANNI하니 2023. 1. 20.

사용 언어 - Python3

9012번: 괄호 (실버4, 스택)

문제 ★스택 문제

 

9012번: 괄호

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

www.acmicpc.net

 

 

정답

간단한 스택 문제 !!

(내 코드 풀이)

열린 괄호를 스택에 넣어, 닫힌 괄호가 있으면 열린 괄호 한개를 빼주는 형태. 

열린 괄호인 경우, 스택에 append / 닫힌 괄호인 경우, 스택에 pop

닫혔으나 스택에 아무것도 없는 경우 ans = False로 하여, 더이상의 for문을 진행하지 않고 break.

최종적으로 스택에 아무것도 안남아있고, ans = True여야 조건 만족 YES! 

# 정답
n = int(input())

for i in range(n):
    stack = []
    ans = True
    vps = input()
    for j in range(len(vps)):
        if vps[j] == '(':
            stack.append(vps[j])
        elif vps[j] == ')' and len(stack)>=1:
            stack.pop()
        else:
            ans = False
            break

    if len(stack) == 0 and ans == True:
        print("YES")
    else:
        print("NO")

굳이 리스트 형태로 저장하고 append, pop 하지 않아도 된다.

리스트가 비어있다는 개수만 확인하면 되는 문제이기 때문이다! 리스트 대신 sum = 0 형태로 해도 된다.

그렇다면, append 대신 sum+= 1, pop 대신 sum -= 1, 예외처리는 sum = -1로 하여  break로 설정한다.

전체적인 flow는 동일하다.

 


레퍼런스

  • 깃허브 정답
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글

[백준] 18258번 큐 2  (0) 2023.01.21
[백준] 1874번 스택 수열  (0) 2023.01.20
[백준] 10773번 제로  (0) 2023.01.20
[백준] 10828번 스택  (0) 2023.01.20
[백준] 4949번 균형잡힌 세상  (0) 2023.01.16

댓글