본문 바로가기
Problem Solving

[Problem Solving] BOJ 1013: Contact

by __K.Jun__ 2025. 3. 23.

문제 링크: 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