본문 바로가기
Problem Solving/BOJ

[BOJ][Python]백준 4949 풀이

by NoiB 2022. 2. 20.
반응형

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

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마

www.acmicpc.net

import sys
import string
ssr = sys.stdin.readline

char = string.ascii_letters+' '+'.'
while 1:
    sentence = ssr().rstrip()
    if sentence=='.':
        break
    for i in char:
        sentence = sentence.replace(i,'')
    check = sentence
    while 1:
        if sentence == '':
            print('yes')
            break
        sentence = sentence.replace('()','')
        sentence = sentence.replace('[]','')
        if sentence == check:
            print('no')
            break
        else:
            check = sentence

예전에 아마 이번 문제랑 비슷한 문제를 푼 적이 있었던 것 같습니다. 그 때는 전부 괄호로만 이뤄진 문자열이 입력으로 주어졌는데 이번에는 다른 문자들도 섞여있죠. 다른 문자들을 전부 지워버리면 괄호로만 이뤄진 문자열이 되므로 그냥 과정이 하나 더 추가되는 것 뿐이니 쉽게 해결하실 수 있을겁니다.

 

저는 변환이 이뤄진 다음에도 원래 문자열과 같다면 no를, 전부 변환이 완료되었다면 yes를 출력하는 방식으로 코드를 짰는데요. 예전에 짰던 건 엄청 비효율적이었던 것 같은데 그래도 성장은 했구나 하는 생각이 듭니다.

 

이제 슬슬 클래스 2 문제들도 끝이 보이는데요. 빨리 힘내서 풀어야겠습니다.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]백준 15829 풀이  (0) 2022.02.20
[BOJ][Python]백준 10773 풀이  (0) 2022.02.20
[BOJ][Python]백준 2805 풀이  (0) 2022.02.19
[BOJ][Python]백준 1966 풀이  (0) 2022.02.19