잡다로그

[Python/코테] 백준 4949 균형잡힌 세계 본문

Algorithm

[Python/코테] 백준 4949 균형잡힌 세계

날으는다람쥐 2023. 11. 14. 15:49

4949 균형잡힌 세계

문제 및 조건 설명: https://www.acmicpc.net/problem/4949

알고리즘 설계

  • 스택을 활용하는 대표적인 예시인 괄호 쌍 문제이다.

주의할 것

  • while 문의 종료 조건을 잘 설정했는가?
  • 반복마다 스택 및 flag 변수를 초기화해주고 있는가?
  • 잘못된 입력에 대해 즉시 종료하고 있는가?

알고리즘 구현

import sys

while True:
    input = list(sys.stdin.readline())

    if input[0] == '.':
        break

    stack = []
    is_balanced = True

    for item in input:
        if item == "(" or item == "[":
            stack.append(item)

        elif item == ")":
            if len(stack) != 0:
                if stack[-1] == "(":
                    stack.pop()
                elif stack[-1] == "[":  # 틀린 사례이므로 바로 종료
                    break
            else:
                is_balanced = False
                break

        elif item == "]":
            if len(stack) != 0:
                if stack[-1] == "[":
                    stack.pop()
                elif stack[-1] == "(":
                    break
            else:
                is_balanced = False  # no 로 출력하기 위함
                break               # 틀린 사례이므로 바로 종료

    if is_balanced and len(stack) == 0:
        print("yes")
    else:
        print("no")

나다어

  • 입력은 기본적으로 문자열로 저장된다.
    입력을 공백으로 구분해서 받기 → .split()
    입력을 배열에 저장하기 → list(입력)
    문자열을 한 글자씩 배열에 저장하기 → list("문자열")
Comments