코딩 테스트(Python)/백준, 프로그래머스
4949 균형잡힌 세상
5_hyun
2022. 2. 12. 14:55
반응형
https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
내 풀이(맞음)
x = 1
lst = []
while(True):
x = input()
if x == '.':
break
lst.append(x)
rst = []
for i in range(len(lst)):
ary = []
for j in range(len(lst[i])):
if lst[i][j] == '(' or lst[i][j] == '[':
ary.append(lst[i][j])
elif lst[i][j] == ')' or lst[i][j] == ']':
if len(ary) == 0:
rst.append("no")
break
if (lst[i][j] == ')' and ary[-1] == '(') or ((lst[i][j] == ']' and ary[-1] == '[')):
ary.pop()
else:
rst.append("no")
break
if j == len(lst[i]) - 1 and ary:
rst.append("no")
elif j == len(lst[i]) - 1 and len(ary) == 0:
rst.append("yes")
for i in rst:
print(i)
'.'이 들어오기 전까지 입력을 받는다. 그리고 '(', '['이면 ary에 넣는다. ')', ']'일땐 ary가 비어있으면 no이고 괄호의 짝이 맞으면 ary에 오른쪽 괄호를 삭제한다. 균형이 맞지 않으면 no이다. 그리고 마지막 문자이고 ary가 안비었으면 no이고 ary가 비어있으면 yes이다.
리스트 마지막 원소를 가져오려면 ary[-1] 이런식으로 하면된다.
반응형