문제
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
주요 아이디어
괄호 짝이 올바르게 구성되었는지 확인하는 문제.
간단하게 스택을 사용하면 풀 수 있을 것 같다.
1. 문자열 순서대로 읽기
2. 문자열의 괄호 순차대로 읽기
“(” 일 경우 스택에 쌓기
“)”일 경우
스택에 “(” 존재할 경우 스택 pop
스택에 “(” 존재하지 않을 경우 exception
3. 문자열 종료 시 스택 len ≥ 1일 경우, exception_flag == 1
→ PS X
나머지 경우 → PS
코드 구현 (Python 3)
더보기
# 스택으로 VPS 검사
N = int(input()) # 예제 개수 입력받기
stack = []
exception_flag = 0
for i in range(N):
string = input()
for j in range(len(string)):
if string[j] == '(': # push
stack.append(string[j])
else: #pop
if len(stack) == 0:
exception_flag = 1
break
else:
stack.pop()
if len(stack) != 0 or exception_flag == 1:
print("NO")
else:
print("YES")
stack.clear()
exception_flag = 0
제출 결과
코드 개선 방안
- 위 코드에서는 파이썬 기본 내장 메서드인 append(), pop()을 사용했다.
- 직접 구현해본 자료구조 스택을 사용해도 괜찮을 것 같다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 10845. 큐 (0) | 2022.09.07 |
---|---|
[BOJ] 10828. 스택 (0) | 2022.09.07 |
[BOJ] 10816. 숫자카드 2 (0) | 2022.09.07 |
[BOJ] 10814. 나이순 정렬 (0) | 2022.09.07 |
[BOJ] 10250. ACM 호텔 (0) | 2022.09.07 |