python/알고리즘 문제풀이

[백준 | 파이썬3] 9012. 괄호- 스택

빛날희- 2021. 8. 15. 21:04

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

 

9012번: 괄호

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

www.acmicpc.net

> 스택

우선 input으로 모든 입력값들을 받은 후 입력값들이 각각 올바른 문자열인지 판단하는 vps 함수를 구현하여 해결했다. 

문자열을 하나씩 입력 받기 위한 리스트로 target 변수를 선언한다. 만일 들어오려는 문자열이 '('이면 리스트에 append하고 아니라면 가장 마지막에 들어온 괄호 '('을 리스트에서 빼준다

 

그런데 그 과정에서 다음과 같은 문자열은 마지막 ')'가 들어왔을 때 리스트에 '('가 모두 제거되어 없기 때문에 pop함수를 실행하면 에러가 난다. 

'(()))'

따라서 try-except문을 활용하여 에러가 날때는 NO 문자열을 반환해주도록 구현하였다. 

 

vps 함수 내 반복문을 모두 실행했을 때 target 리스트 안에 아무런 값이 없으면 올바른 문자열이기 때문에 'YES'를 그렇지 않으면 'NO'를 반환하도록 한다.