백준 1013번 - Contact
정규표현식을 공부하기 이전에 if문과 슬라이싱을 이용하여 풀어보았지만 index오류로 포기했었다. 디스코드 봇을 만들다 보니 자연스럽게 정규식에 대해 공부하게되었고, re라이브러리를 이용하자마자 풀려서 시원했다.
풀이과정: 정규식과 일치하는지 묻는 문제다. 파이썬의 표준 라이브러리인 re를 import해서 사용하여 문제를 풀면된다.
문제는 정규화 시킨 문자열패턴을 이용하여 주어지는 문자열 전체와 일치하는지 검사하면된다. re문법중에서 re.fullmatch를 이용하면 주어지는 문자열 전체가 내가 원하는 문자열패턴과 일치하는지 검사할 수 있다.
코드
import re
#테스트 케이스 개수 T를 입력받는다.
T = int(input())
for i in range(T):
num = str(input())
#str()을 사용하지 않아도 된다. input()함수는 입력한 문자열을 애초에 str형태로 반환한다.
if re.fullmatch('(100+1+|01)+', num) != None:
print('YES')
#re.fullmatch()함수는 문자열패턴과 주어지는 문자열이 맞지 않으면 None을 반환한다.
#또한 맞다면 re의 내장 함수를 이용할 수 있는 re객체를 반환한다.
else:
print('NO')