반응형
https://www.acmicpc.net/problem/9012
9012번: 괄호
문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(conc
www.acmicpc.net

말이 복잡하지만, 결국
1 .왼쪽 괄호와 오른쪽 괄호 개수가 동일하며
2. 처음에는 (로 시작하고 마지막에는 )로 끝나면 VPS라고 부른다는 의미다.
stack으로 괄호식이 잘 구성되었는지 확인하는 함수를 만들면 된다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
n = int(input()) | |
def check(brackets): | |
stack = [] | |
for i in brackets: | |
if i == "(": | |
stack.append(i) | |
else: | |
# ")" 를 입력받았는데 이전에 "("를 입력받은 적이 없는 경우. VPS가 아니다. | |
if not stack: | |
print("NO") | |
return | |
else: | |
# stack에 "("가 있으므로 stack에서 "("를 꺼낸다. | |
stack.pop() | |
# 괄호를 전부 다 돌았는데 stack 안에 무언가가 남아 있으면 VPS가 아니다. | |
if not stack: | |
print("YES") | |
return | |
else: | |
print("NO") | |
return | |
for _ in range(n): | |
brackets = input() | |
check(brackets) |
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 백준 5397. 키로거 (0) | 2020.01.13 |
---|---|
[Python] 프로그래머스. 입국 심사 (Level 3) (0) | 2020.01.11 |
[Python] 백준 1654. 랜선 자르기 (0) | 2020.01.09 |
[Python] 백준 2231. 분해합 (0) | 2020.01.08 |
[Python] 프로그래머스. 징검다리 (Level 4) (0) | 2020.01.07 |