본문 바로가기

(python) 백준 균형잡힌 세상 - re 정규 연산 풀이

2020. 6. 24.

문자열에서 괄호가 짝이 맞는지 확인하는 문제 ( [ ) ] 이렇게 되어있으면 안된다.


처음에는 (, [에 따라 각각 스택에 넣어서 문제를 풀었지만 맞은 사람중 정규 연산으로 푼 사람이 있어 시도해 봤다.

 

re.sub 사용법

 

re.sub(1, 2, 3)

1. 찾을 특정 문자열 패턴

2. 찾은 String.을 바꿀 String 값

3. 찾을 대상

 

알고리즘

 

1. re.sub를 사용해 괄호 외 모든 문자들을 제거한다.

2. 제거한 문자중  () [] 이 있으면 또 제거해준다.

3. 위 과정을 거쳤지만 전 문자열과 변함이 없다면 짝이 맞지 않는 괄호가 있으므로 no 출력

4. 문자열이 전부 소거 되었다면 yes 출력

import re
import sys
input = sys.stdin.readline

a =re.compile('[^\(\)|\[\]]')
ps = re.compile('\(\)|\[\]')

while True:
    s = input().rstrip()
    if s == '.': break
    while s:
        result = a.sub('',s)
        result = ps.sub('',result)
        if result == s: break
        s = result
    if s:
        print('no')
    else:
        print('yes')
댓글