CodingTest/Baekjoon
[baekjoon] 백준 4889번(파이썬): 안정적인 문자열
JunJangE
2022. 1. 15. 10:38
문제
4889번: 안정적인 문자열
입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우
www.acmicpc.net
알고리즘
- 반복문을 통해 문자열을 확인한다.
- 문자열이 '-'가 한 개 이상일 경우 반복문을 멈춘다.
- 반복문을 통해 안정적인 문자열을 찾아 pop 한다.
- 안정적인 문자열을 제외한 문자열을 안정적인 문자열로 바꿔주면서 카운트한다.
코드
import sys
inx = 1
# 반복문을 통해 문자열을 확인
while True:
word = list(map(str, sys.stdin.readline().strip()))
# 문자열이 "-"가 한 개 이상일 경우 반복문을 멈춘다.
if word.count("-") >= 1:
break
cnt = 0
stack = [word[0]]
# 반복문을 통해 안정적인 문자열을 찾는다.
for i in range(1, len(word)):
if stack:
# 안정적인 문자열이라면 pop 한다.
if stack[-1] == '{' and word[i] == '}':
stack.pop()
continue
# 문자열을 계속해서 추가
stack.append(word[i])
# 안정적인 문자열을 제외한 문자열을 안정적인 문자열로 바꿔준다.
for j in range(0, len(stack), 2):
if stack[j] == "}":
cnt += 1
if stack[j + 1] == "{":
cnt += 1
print("{0}. {1}".format(inx, cnt))
inx += 1
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com