[백준/python] 9012번: 괄호

2023. 7. 14. 20:42· Koala - 11기/기초 알고리즘 스터디
목차
  1. 문제
  2. 문제 설명
  3. 코드
  4. 코드 설명

문제

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

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net


문제 설명

T개의 테스트 데이터 괄호문자열을 받고 올바른 괄호 문자열(Valid PS, VPS)인지 판별하여

'NO' 또는 'YES'를 출력하는 문제이다.


코드

T = int(input())

for _ in range(T):
    arr = list(input().strip())  # 입력 문자열을 공백 및 개행 문자 제거 후 리스트로 변환
    stack = []  # 스택으로 활용할 리스트

    for char in arr:
        if char == "(":
            stack.append(char)
        elif char == ")":
            if stack and stack[-1] == "(":  # 스택이 비어있지 않고, 짝이 맞는 "("가 스택의 맨 위에 있는 경우
                stack.pop()
            else:
                stack.append(char)

    if not stack:  # 스택이 비어있으면 모든 괄호가 짝이 맞음
        print("YES")
    else:
        print("NO")

코드 설명

반복문을 통해 괄호를 확인하고 조건에 맞게 스택에 push, pop 해준다.

1. '(' 라면, 그냥 스택에 push해준다.

2. ')' 라면, 스택이 비어있지 않고 짝에 맞는 '('가 스택 맨 위에 있는지 확인한다.

3. 조건에 맞다면 스택에서 맨 위에 있는 괄호 '('를 pop해준다.

4. 조건에 맞지 않다면 ')'을 넣는다.

+ 스택에 들어간 ')'는 pop되지 않으므로 반복문이 종료된 후에도 스택에 남게 된다.

5. 반복문이 종료되고 스택이 비어있으면 모든 괄호가 짝이 맞았다는 뜻이므로, 'YES'를 출력한다.

6. 만약 스택이 비어있지 않다면 처리되지 않은 괄호가 남아있다는 뜻이므로, 'NO'를 출력한다.


이 문제의 핵심은 바로 닫힌 괄호 ')'이다.

닫힌 괄호가 스택에 쌓인 열린 괄호보다 많이 들어온 순간, 이미 그 문자열은 VPS가 성립되지 않는다.

추가적으로 '('와 ')'의 개수만 같다고 해서 VPS가 되지않는다.

예를 들어, '())(()' 같은 입력은 개수가 같지만 처리될 수 있는 열린 괄호가 없는 상태에서 닫힌 괄호가 먼저 등장했기 때문에 올바른 괄호 문자열이 아니다.

저작자표시 (새창열림)

'Koala - 11기 > 기초 알고리즘 스터디' 카테고리의 다른 글

[백준/Python] 1551번: 수열의 변화  (0) 2023.07.15
[백준/Python3] 2839번: 설탕 배달  (0) 2023.07.15
[백준/python] 1267번: 핸드폰 요금  (0) 2023.07.15
[백준/Python] 4458번: 첫 글자를 대문자로  (0) 2023.07.15
[백준/C++] 2839번: 설탕 배달  (0) 2023.07.14
  1. 문제
  2. 문제 설명
  3. 코드
  4. 코드 설명
'Koala - 11기/기초 알고리즘 스터디' 카테고리의 다른 글
  • [백준/Python3] 2839번: 설탕 배달
  • [백준/python] 1267번: 핸드폰 요금
  • [백준/Python] 4458번: 첫 글자를 대문자로
  • [백준/C++] 2839번: 설탕 배달
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1889)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (43)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (36)
    • Koala - 20기 (0)
      • 코딩테스트 기초 스터디 (0)
      • 코딩테스트 심화 스터디 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • BFS
  • 백트래킹
  • dfs
  • C++
  • BOJ
  • 파이썬
  • dp
  • 백준

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[백준/python] 9012번: 괄호
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.