Baekjoon 4949.py [균형잡힌 세상]

6317 단어 문자열psps

문제가 궁금하다면?

내 풀이

import sys
input = sys.stdin.readline


arr = []
while True:
    words = list(input().rstrip())
    if words[0] == '.':
        break
    arr.append(words)
result = ['yes'] * len(arr)

for i in range(len(arr)):
    stack = []
    for word in arr[i]:
        if word == '(' or word == '[':
            stack.append(word)
        elif word == ')' or word == ']':
            if len(stack) == 0:
                result[i] = 'no'
                break
            if word == ')':
                if stack[-1] == '[':
                    result[i] = 'no'
                    break
            if word == ']':
                if stack[-1] == '(':
                    result[i] = 'no'
                    break
            stack.pop()
    if len(stack) >= 1:
        result[i] = 'no'

    print(result[i])

풀이 복기

스택을 사용해서 구현함. 풀이방법을 떠올리는것은 쉬웠는데 반례((()) 를 생각못하고 성급하게 제출해서 한번 틀려버림.

다른 풀이를 보며

처음 while문 안에 조건들을 작성했으면 for을 다시 사용해 순회하는시간을 줄였을것
입력을 끝까지 받고 조건을 작성하려는 습관을 버리자

좋은 웹페이지 즐겨찾기