class 2

while True:
    br = input()
    if br == '.':
        break
    stack = []
    chk = True
    for i in br:
        if i == '(' or i == '[':
            stack.append(i)
        elif i == ')':
            if not stack or stack[-1] == '[':
                chk = False
                break
            elif stack[-1] == '(':
                stack.pop()
        elif i == ']':
            if not stack or stack[-1] == '(':
                chk = False
                break
            elif stack[-1] == '[':
                stack.pop()
    if chk == True and not stack:
        print('yes')
    else:
        print('no')

<코드 설명>
while문으로 무한반복을 시켜주고 입력받은 문자가 '.'일 때 break하도록 하였다.

입력받은 br을 하나씩 검사해준다.
-> br이 '(', '['이면 stack에 추가해준다. br이 ')'이면 stack이 없거나 stack에 마지막'['일 때 짝이 맞지 않기 때문에 chk를 False로 변경해준다. stack의 마지막이 '('이였다면 짝이 맞으므로 pop해준다.
-> br이 ']'이면 stack이 없거나 stack에 마지막'('일 때 짝이 맞지 않기 때문에 chk를 False로 변경해준다. stack의 마지막이 '['이였다면 짝이 맞으므로 pop해준다.

결론적으로 chk이 True였으며 stack이 모두 pop된 상태라면 yes를 출력해주고, 그렇지 않으면 no를 출력해주었다.

<실행 결과>

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 10773 제로  (0) 2022.06.19
[BOJ] 1251 단어 나누기  (0) 2022.05.28
[BOJ] 9012 괄호  (0) 2022.05.28
[BOJ] 1094 막대기  (0) 2022.05.22
[BOJ] 10814 나이순 정렬  (0) 2022.05.22

+ Recent posts