728x90
BOJ 4889 안정적인 문자열
문제
여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다.
여기서 안정적인 문자열을 만들기 위한 최소 연산의 수를 구하려고 한다.
안정적인 문자열의 정의란 다음과 같다.
1. 빈 문자열은 안정적이다.
2. S가 안정적이라면, {S}도 안정적인 문자열이다.
3. S와 T가 안정적이라면, ST(두 문자열의 연결)도 안정적이다.
{}, {}{}, {{}{}}는 안정적인 문자열이지만, }{, {{}{, {}{는 안정적인 문자열이 아니다.
문자열에 행할 수 있는 연산은 여는 괄호를 닫는 괄호로 바꾸거나, 닫는 괄호를 여는 괄호로 바꾸는 것 2가지이다.
시간 제한 : 1 초
메모리 제한 : 128 MB
입력
입력은 여러 개의 데이터 세트로 이루어져 있다.
각 데이터 세트는 한 줄로 이루어져 있다.
줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다.
문자열의 길이가 2000을 넘는 경우는 없고, 항상 길이는 짝수이다.
입력의 마지막 줄은 '-'가 한 개 이상 주어진다.
출력
각 테스트 케이스에 대해서,
테스트 케이스 번호와 입력으로 주어진 문자열을 안정적으로 바꾸는데 필요한 최소 연산의 수를 출력한다.
예제 입력 1
}{
{}{}{}
{{{}
---
예제 출력 1
1. 2
2. 0
3. 1
풀이
import sys
input = sys.stdin.readline
n = 0
while True:
stack = []
k = 0
n += 1
s = input()
if '-' in s:
break
for i in s:
if i == '{':
stack.append(i)
elif i == '}' and stack:
stack.pop()
elif i == '}' and not stack:
stack.append('{')
k += 1
if len(stack) != 0:
k += len(stack)//2
print(f"{n}. {k}")
728x90
'Algorithm(Python) > 스택' 카테고리의 다른 글
[Algorithm] 백준 BOJ 5397 키로거(python 파이썬) (0) | 2022.10.25 |
---|---|
[Algorithm] 백준 BOJ 2504 괄호의 값(python 파이썬) (0) | 2022.10.24 |
[Algorithm] 백준 BOJ 1935 후위 표기식2(python 파이썬) (0) | 2022.10.22 |
[Algorithm] 백준 BOJ 1918 후위 표기식(python 파이썬) (0) | 2022.10.21 |
[Algorithm] 백준 BOJ 17413 단어 뒤집기 2(python 파이썬) (0) | 2022.10.20 |