Coding Test/BaekJoon_Python
백준 1013 <Contact> Python
JunOnJuly
2025. 2. 2. 16:27
728x90
https://www.acmicpc.net/problem/1013
정규 표현식 문제입니다.
파이썬 언어와는 별개로 모든 언어에서 공통적으로 채용하고 있는 '문자에 대한 공통 정규 표현식' 이 있는데, 이를 알면 굉장히 간단히 풀 수 있는 문제입니다.
파이썬에서 정규 표현식을 사용하기 위해서는 re 모듈을 사용합니다.
해당 문제에서 나오는 정규식을 간단히 설명하자면
'+' 는 해당 문자의 앞에 있는 식이 1번 이상 반복된다는 뜻입니다. 비슷한 식으로는 '*' 가 있는데 이는 앞에 있는 식이 0번 이상 반복된다는 뜻입니다.
'|' 는 앞의 식 혹은 뒤의 식 이라는 뜻으로, 둘 중 무엇이라도 올 수 있다는 뜻입니다.
'()' 는 그루핑 식으로 'abc+' 와 같이 사용하면 해당 식에서의 '+' 는 'abc', 'abcc', 'abcccc' 등 앞선 식인 'c' 만 인식 하지만 식을 묶어 통째로 인식하게 해주는 식입니다.
우선 re.compile 로 정규 표현식을 컴파일 해준 뒤 fullmatch 함수로 전체 문자열이 해당 표현식과 일치하는지 판별할 수 있습니다.
08-1 정규 표현식 살펴보기
정규 표현식(regular expressions)은 복잡한 문자열을 처리할 때 사용하는 기법으로, 파이썬만의 고유 문법이 아니라 문자열을 처리하는 모든 곳에서 사용하는 일종의 형…
wikidocs.net
import sys
import re
input = sys.stdin.readline
def solution(T, strings):
# 정규 표현식 컴파일
p = re.compile('(100+1+|01)+')
for string in strings:
if p.fullmatch(string):
print('YES')
else:
print('NO')
# 입력
T = int(input().strip())
strings = [input().strip() for _ in range(T)]
solution(T, strings)
728x90