-
[백준] 균형잡힌 세상 (4949번) 파이썬Coding Test/Algorithm 2021. 3. 21. 05:09
'()[]'의 균형이 잡혔는지 아닌지를 확인하는 문제이다.
'(', '['와 ')', ']'는 서로 대칭이 되어야 "yes" 판정을 내릴 수 있다는 점이 중요하다.
나는 deque 라이브러리를 이용해서 스택의 역할로 사용했다.
'('와 '['가 올 때는 스택에 넣고 ')'와 ']'가 가장 마지막에 넣은 기호와 대칭인지를 확인하기에 적합하다고 생각했기 때문이다.
(ex, ')'가 있다면 스택의 top이 '(' 인지를 확인해서 맞다면 pop, 아니라면 "no"를 출력)
import sys from collections import deque while(1): string = sys.stdin.readline() if string == '.\n': break que = deque('') result = "" for i in range(len(string)): if string[i] == '(' or string[i] == '[': que.append(string[i]) elif string[i] == ')': if not que: result = "no" break elif que[-1] == '(': que.pop() else: result = "no" elif string[i] == ']': if not que: result = "no" elif que[-1] == '[': que.pop() else: result = "no" if result: print(result) elif not que: print("yes") else: print("no")
'Coding Test > Algorithm' 카테고리의 다른 글
[백준] 팰린드롬수 (1259번 파이썬) (0) 2021.06.10 [백준] 블랙잭 (2798번 파이썬) (2) 2021.06.09 [백준] 소수&팰린드롬 (1747번) 파이썬 (0) 2021.03.20 [백준] 등수 구하기 (1205번) 파이썬 (0) 2021.03.19 백준 Q-인덱스 (13333번) 파이썬 (0) 2021.03.18