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