문제 링크: https://www.acmicpc.net/problem/1013
정규 표현식을 사용하여 주어진 문자열이 정규 표현식에 매칭되는지 확인하는 문제이다.
pattern에 ^(100+1+|01)+$ 을 컴파일하는데,
여기서 ^와 &는 주어진 문자열의 전체를 매칭한다는 뜻이다. ^는 문자열의 시작을 의미하고, $는 문자열의 끝을 의미한다.
주어진 문자열 전체에 대해 (100+1+|01)+이라는 패턴이 존재하는 지 확인해야한다.
패턴 (100+1+|01)+은
(100+1+) 이라는 패턴이 한 번 이상 존재 하거나, (01) 이라는 패턴이 한 번 이상 존재하는 패턴이다
(100+1+)은 10뒤에 0이 한 번 이상 나타나야 하고, 그 뒤에 1이 한 번 이상 나타나는 패턴이다.
import sys
import re
read = sys.stdin.readline
pattern = re.compile('^(100+1+|01)+$')
T = int(read())
for _ in range(T):
C = read().rstrip()
if pattern.match(C):
print("YES")
else:
print("NO")
728x90
'Problem Solving' 카테고리의 다른 글
[Problem Solving] BOJ 2239: 스도쿠 (0) | 2025.03.27 |
---|---|
[Problem Solving] BOJ 14426: 접두사 찾기 (0) | 2025.03.25 |
[Problem Solving] BOJ 1461: 도서관 (0) | 2025.03.22 |
[Problem Solving] BOJ 1743: 음식물 피하기 (0) | 2025.03.21 |
[Problem Solving] BOJ 5557: 1학년 (0) | 2025.03.17 |