-
스택 #백준 4949알고리즘 2021. 3. 18. 19:29
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
[ 문제 해결 과정 ]
우선 입력받은 문자를 하나씩 체크하여 좌측괄호( "(","[" )이면 스택에 그대로 넣어주고 우측괄호( ")","]" )이면 저장된 스택의 제일 마지막에 저장된 원소가 해당 괄호과 짝인지 확인하여 만약 짝이라면 마지막 원소를 제거해주고 짝이 아니라면 균형이 맞지 않는것이므로 NO를 출력해준다. 그리고 입력받은 문자가 "."이라면 종료해주고 아니면 계속 반복해준다.
[ 소스코드 ]
while True: bracket = input() if bracket == ".": break bracket_stack = [] answer = True for j in bracket: if j == "(" or j == "[": bracket_stack.append(j) elif j == ")": if len(bracket_stack) == 0: answer = False break if bracket_stack[-1] == "(": bracket_stack.pop() else: answer = False break elif j == "]": if len(bracket_stack) == 0: answer = False break if bracket_stack[-1] == "[": bracket_stack.pop() else: answer = False break if answer and not bracket_stack: print("yes") else: print("no")
'알고리즘' 카테고리의 다른 글
스택 #백준 17298 (0) 2021.03.19 스택 #백준 1874 (0) 2021.03.18 스택 #백준 9012 (0) 2021.03.18 스택 #백준 10773 (0) 2021.03.15 스택 #백준 10828 (0) 2021.03.15