알고리즘
[백준] 4949 균형잡힌 세상 Python
아람2
2025. 2. 17. 17:00
반응형
1. 문제
영문 알파벳, 공백, 소괄호와 대괄호로 이루어져 있는 문자열에서
소괄호와 대괄호가 짝을 이루는지 판단하는 프로그램
2. 제한
시간 제한 1초
메모리 제한 128MB
3. 알고리즘 분류
* 자료 구조
* 문자열
* 스택
4. 접근 방식
9012 괄호 https://www.acmicpc.net/problem/9012 문제는
간단하게 stack 를 이용해서 ( 이면 stack 에 넣고, ) 이면 pop 해서 짝을 맞췄는데
괄호의 종류가 두 개가 되니 ) 이면 ( 이랑 맞추고 ] 이면 [ 와 맞추는 작업을 추가했다
5. 전체 코드 w/ Python
# https://www.acmicpc.net/problem/4949
# 영문 알파벳, 공백, 소괄호와 대괄호로 이루어져 있는 문자열에서
# 소괄호와 대괄호가 짝을 이루는지 판단하는 프로그램
def is_vps(s):
stack = []
for c in s:
if c in "([":
stack.append(c)
elif c == ")":
# Stack 이 비었거나 짝이 맞지 않는 경우 NO
if not stack or stack[-1] != "(":
return "no"
# 짝이 맞으면 Pop
stack.pop()
elif c == "]":
if not stack or stack[-1] != "[":
return "no"
stack.pop()
if not stack:
return "yes"
else:
return "no"
if __name__ == '__main__':
while True:
line = input()
if line == '.':
break
print(is_vps(line))
반응형