문제출처: https://www.acmicpc.net/problem/4889
4889번: 안정적인 문자열
입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우
www.acmicpc.net
1. 문제 접근 방식
괄호 문제이므로 스택을 사용하면 되겠다고 생각했다.
하지만 전형적인 문제와는 다르게
삽입할 원소가 }일때 삽입하는 배열의 마지막 원소가 {가 아닐경우 미리 count값을 1 올려주고 } 대신 {을 삽입함으로써
세가지 케이스 ( }{, }} )를 {{의 한가지 케이스로 줄인 것이 적절했다고 생각한다.
2. 내가 푼 코드
import sys
num = 1
while True:
x = sys.stdin.readline().strip()
if '-' in x:
break
count = 0
arr=[]
for i in x:
if i == '{':
arr.append(i)
elif i == '}':
if len(arr)!=0 and arr[-1]=='{':
arr.pop()
else:
count+=1
arr.append('{')
while arr:
if len(arr)%2 == 0:
count+=1
arr.pop()
print('{}. '.format(num)+str(count))
num+=1
3. 결과 및 느낀점
괄호 문제에서는 스택을 사용하자.
복습을 하자!
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 11501 Python (0) | 2021.08.23 |
---|---|
[Boj/백준] 1181 Python (0) | 2021.08.23 |
[Boj/백준] 14425 Python (0) | 2021.08.20 |
[Boj/백준] 1543 Python (0) | 2021.08.19 |
[Boj/백준] 1316 Python (0) | 2021.08.18 |