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

2021. 1. 13. 16:33·SW개발/코딩테스트

 

def vps(p):
    stack = []
    check = True
    for i in p:
        if i == "(" or i == "[":
            stack.append(i)
        elif i == ")" or i == "]":
            if i == ")":
                if not stack or stack[-1] == "[" :  # ")", "]" 로 먼저 시작되는 경우 no
                    check = False
                    break
                else:
                    stack.pop()
            elif i == "]":
                if not stack or stack[-1] == "(":
                    check = False
                    break
                else:
                    stack.pop()
    if not stack and check == True:
        print("yes")
    else:
        print("no")
while True:
    p = input()
    if (p == '.'):
        break
    vps(p)

 

코드설명

기본적인 방식은 이전의 9012번 문제 풀이와 유사하다. 하지만 여러 가지 경우의 수를 체크해 주어야 한다.

먼저, 반복문을 돌면서 입력되는 값이 . 일 경우 반복문을 탈출한다.

vps 함수에서는 문장을 탐색하면서 값이 "(" 나 "[" 로 시작하는 경우에는 스택에 삽입하여준다.

그렇지 않고 ")", "]" 와 같은 경우일 때는 2가지 경우로 나누어 생각한다.

1) ")" 이 오는 경우 - 스택에 값이 존재하지 않음 혹은 "["로 시작되어 있는 경우 ")" 로 닫힐 수 없으므로 check = False 로 할당

2) "]" 이 오는 경우 - 스택에 값이 존재하지 않음 혹은 "("로 시작되어 있는 경우 "]" 로 닫힐 수 없으므로 check = False 로 할당

위의 경우가 아니라면 정상적인 경우이므로 스택에서 값을 지워준다.

마지막으로, 스택에 값이 없고 check = True 인 경우에만 "yes" 를 출력하고 그 외엔 "no" 를 출력한다.

 

Point : 이전 문제와 유사하지만 대괄호가 추가되면서 체크해야 할 조건이 늘어났다.

예를 들어 "[" 가 온 경우 ")"가 닫힐 수 없고, "("가 온 경우 "]"가 닫힐 수 없는 경우와 같다.

위와 같은 조건들에서는 체크 항목을 False 로 할당 후 "no"를 출력하면 된다.

728x90

'SW개발 > 코딩테스트' 카테고리의 다른 글

[백준]18258번 큐 2 - 큐  (0) 2021.01.15
[백준]1874번 스택 수열 - 스택  (0) 2021.01.14
[백준]9012번 괄호 - 스택  (0) 2021.01.12
[백준]10773번 제로 - 스택  (0) 2021.01.11
[백준]10828번 스택 - 스택  (0) 2021.01.02
'SW개발/코딩테스트' 카테고리의 다른 글
  • [백준]18258번 큐 2 - 큐
  • [백준]1874번 스택 수열 - 스택
  • [백준]9012번 괄호 - 스택
  • [백준]10773번 제로 - 스택
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (309)
      • SW개발 (305)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (3)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    django
    배달
    플레이스토어
    Contributor
    트리 #AVL #알고리즘 #자료구조
    어플리케이션
    오픈소스
    배달비 공유
    음식
    배공파용
    g
    라이프 스타일
    컨트리뷰터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[백준]4949번 균형잡힌 세상 - 스택
상단으로

티스토리툴바