백준 단계별문제/스택/ 파이썬 백준 4949 균형잡힌 세상
문제 : https://www.acmicpc.net/problem/4949
아래 링크의 풀이와 거의 동일하게 짰음. 자세한 설명은 아래 링크에 다 해놨으니 참고하시길!!
import sys
while True: # 반복 횟수가 정해지지 않아서 while문 사용
sentance = sys.stdin.readline()
stk = []
if sentance[0] == ".": # 첫번째 문자로 .이 들어오면 반복문 종료
break
for i in range(len(sentance)):
if (sentance[i] == "(") or (sentance[i] == "[") : # ( 거나 [이면 리스트 stk에 추가
stk.append(sentance[i])
# print("append : ", stk)
elif (sentance[i] == ")"): # )이면
if len(stk) != 0 and (stk[-1] == "(") : # 빈 리스트가 아니고, 리스트의 마지막 원소가 ( 일때 ( pop 해줌
stk.pop()
# print("pop : ", stk)
else : # stk가 빈 리스트라면
stk.append(sentance[i]) # )를 추가해준다. 어차피 )가 먼저 추가되므로 올바른 균형이 아니므로 바로 반복문 종료시킴
break
elif (sentance[i] == "]"): # )와 같은 원리
if len(stk) != 0 and (stk[-1] == "[") :
stk.pop()
# print("pop : ", stk)
else:
stk.append(sentance[i])
break
if len(stk) == 0: # 빈 리스트면 다 pop돼서 균형이 잡혔다는 뜻으로 올바른 균형
print("yes")
elif len(stk) > 0: # 0 이상이라면 , 모두 pop되지 않아 균형잡힌 문장이 아님을 판단
print("no")
i+=1 # i를 증가시켜 반복 계속 진행
Author And Source
이 문제에 관하여(백준 단계별문제/스택/ 파이썬 백준 4949 균형잡힌 세상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ddd8177/백준-단계별문제스택-파이썬-백준-4949-균형잡힌-세상저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)