시작이 반

[백준] 4949번 (python 파이썬) 본문

알고리즘/백준

[백준] 4949번 (python 파이썬)

G_Gi 2021. 3. 4. 17:09
SMALL

https://www.acmicpc.net/problem/4949

백준의 9012 괄호문제와 비슷한 문제이다.

 

문자열에서 '('와 '['를 만나면 stack에 쌓아준다.

']'를 만나면 stack의 top을 확인하여 '['일때 pop을 해주고 아니면 no를 출력한다.

마찬가지로 ')'를 만나면 stack의 top을 확인하여 '('일때 pop을 해주고 아닐때 no를 출력한다.

 

이전에 풀었던 9012의 코드를 이용해서 풀어서 출력이 소문자인 것을 확인 못하고 계속 왜 틀렸는지 생각했다...

(시간 날림....)

import sys
input = sys.stdin.readline

while True:
    string = list(input())
    string.pop()
    if string[0] == '.' and len(string) == 1:
        break

    ps = list()
    small_check = False
    big_check = False
    for i in range(len(string)):
        if string[i] == '(' or string[i] == '[':
            ps.append(string[i])
        elif string[i] == ')':
            if not ps:
                small_check = True
                break
            if ps[-1] == '(':
                ps.pop()
            else:
                small_check = True
                break
        elif string[i] == ']':
            if not ps:
                big_check = True
                break
            if ps[-1] == '[':
                ps.pop()
            else:
                big_check = True
                break

    if not ps and not small_check and not big_check:
        print('yes')
    else:
        print('no')

LIST

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1021번 (python 파이썬)  (0) 2021.03.04
[백준] 1874번 (python 파이썬)  (0) 2021.03.04
[백준] 9012번 (python 파이썬)  (0) 2021.03.04
[백준] 9375번 (python 파이썬)  (0) 2021.03.03
[백준] 2004번 (python 파이썬)  (2) 2021.03.03