인지용

[백준] 4889 안정적인 문자열 [python, 실버1, 스택] 본문

알고리즘

[백준] 4889 안정적인 문자열 [python, 실버1, 스택]

인지용 2026. 1. 19. 10:37

https://www.acmicpc.net/problem/4889

 

 

import sys

def input():
    return sys.stdin.readline().strip()

idx = 1

while True:
    text = input()

    if text.startswith("-"):
        break

    arr = list(text)
    stack = []

    for i in arr:
        if i == '{':
            stack.append(i)
            continue
        else:
            if stack and stack[-1] == '{':
                stack.pop()
            else:
                stack.append(i)

    num = 0

    for i in range(0, len(stack), 2):
        if stack[i] == stack[i+1]:
            num += 1
        else:
            num += 2

    print(f"{idx}. {num}")
    idx += 1

 


먼저 원본 배열에서 안정적인 문자열을 다 제거하고 남은 값들을 변환시켜주면 된다.

 

입력은 무조건 짝수라고 했으니 반복문을 2씩 증가시키고 값이

{ { 혹은 } } 와 같이 같은 값이라면 하나만 바꾸면 되니까 + 1을

} { 라면 두개를 바꿔야 하니까 +2를 해주면 된다.