본문 바로가기
Problem Solving

[백준] 4949 균형잡힌 세상 python 알고리즘 문제

by DuncanKim 2022. 4. 25.
728x90

문제 4949. 균형잡힌 세상

1. 나의 코드와 발상 과정

import sys

answer_list = []
while True:
    a = sys.stdin.readline().rstrip()
    if a == '.':
        break
    answer = []
    for i in a:
        if i.isalpha() or i == " ":
            continue
        elif i == '.':
            break
        elif i == '(':
            answer.append(i)
        elif i == '[':
            answer.append(i)
        elif i == ')':
            if len(answer) != 0 and answer[-1] == '(':
                answer.pop()
            else:
                answer.append(')')
                continue
        elif i == ']':
            if len(answer) != 0 and answer[-1] == '[':
                answer.pop()
            else:
                answer.append(']')
                continue
    if len(answer) == 0:
        answer_list.append("yes")
    else:
        answer_list.append("no")

for i in answer_list:
    print(i)

괄호 문제를 이전에 풀었기 때문에, 쉽게 풀 수 있었다.

다만, 이번에는 대괄호가 추가되었기 때문에, 정수를 스택처럼 활용하는 방법은 쓸 수 없었다.

 

각 라인마다 문자열로 인식을 하고, 알파벳 또는 띄어쓰기일 경우 continue를 하고,

그 외의 것의 경우, append()와 pop()을 활용하여 len()을 가지고 yes, no를 판별해 주었다.

 

자세한 풀이 방법은 괄호 문제(9012)에 나와있다.

https://masterpiece-programming.tistory.com/26

 

 

2. 아쉬운 점

스택에 대한 확실한 개념이해를 마무리 짓는 결정타였다.

 

 

 

 

문제 출처:

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

728x90

댓글