[백준] 균형잡힌 세상 4949번 - Python

GoshK·2022년 2월 6일
0

[백준] Python

목록 보기
10/27
post-thumbnail

[백준] 균형잡힌 세상 4949번

나의 풀이

def check_bracket(sentence):
    stack = []
    for i in range(len(sentence)):
        char = sentence[i]
        if char == '(' or char == '[':
            stack.append(char)

        if char == ')':
            if len(stack) != 0 and stack[-1] == '(':
                stack.pop()
            else:
                return False
        elif char == ']':
            if len(stack) != 0 and stack[-1] == '[':
                stack.pop()
            else:
                return False
    return True if len(stack) == 0 else False

isRun = True
while isRun:
    sentence = input()
    if sentence == ".":
        isRun = False
    else:
        print("yes") if check_bracket(sentence) else print("no")
  • check_bracket 메서드를 만들어서 문장을 검증한다. true 가 나오면 'yes'를 false 가 나오면 'no' 를 출력한다. 이 과정을 '.'만 있는 문장이 나올 때 까지 계속 입력받는다.

check_bracket

  • 괄호를 담을 스택을 만들어준다.
  • 문자열을 반복하면서 문자가 '(' 나 '[' 처럼 여는 괄호라면 스택에 넣어준다.
  • 만약 ')' 나 ']' 처럼 괄호를 닫는 문자라면 스택이 비어있지 않고, 스택에서 꺼낸 여는 괄호와 짝이 맞는다면 스택에서 제거해준다. 아니면 짝이 맞지 않기 때문에 false 를 return 한다.
  • 그냥 '[' 처럼 여는 괄호만 들어오거나, 괄호가 없는 문장이 들어올 수 있기 때문에 최종적으로 스택이 비어있는지 확인하고 비어있다면 true 를, 아니면 false 를 리턴한다.

0개의 댓글