“”” (백준) 1013호 연락처 – PYTHON
https://www.acmicpc.net/problem/1013
문제
“이 무한히 넓은 우주에 인류만 존재한다면 정말 슬프지 않을까요?”
푸에르토리코 아레시보에 있는 아레시보 전파 망원경은 수십 년 동안 존재하지 않았을 수도 있는 외계 문명의 전파를 포착하기 위해 밤하늘을 들여다보았습니다.
이 망원경으로 수집한 전파에서 자연적으로 발생하기 어려운 패턴을 찾아 외계문명의 존재를 판단하는 증거로 삼으려 노력했지만 아직 그런 패턴은 발견되지 않았다.
박사 한국 천문계의 자존심 김동혁은 이러한 탐사를 국내 기술로 수행하기 위해 다음과 같은 전파 표기법을 표준으로 삼았다.
전파의 기본 단위는 { 0 , 1 } 두 개의 요소로 구성되며 x+ ( )는 임의의 수(최소 1회)의 x 반복으로 구성된 전파 집합을 나타냅니다.
(xyx)+ ( )는 괄호 안의 xyx가 반복되는 일련의 파동을 나타냅니다.
아래는 더 나은 이해를 위한 예입니다.
1+ = { 1, 11, 111, 1111, 11111, … }
10+ = { 10, 100, 1000, 10000, 100000, … }
(01)+ = { 01, 0101, 010101, 01010101, 0101010101, … }
(1001)+ = { 1001, 10011001, 100110011001, … }
10+11 = { 1011, 10011, 100011, 1000011, 10000011, … }
(10+1)+ = { 101, 1001, 10001, 1011001, 1001101, 100011011000001, … }
반복을 의미하는 + 외에도 | 의미 또는 문자가 있습니다 { x | y }는 x 또는 y를 의미하고, { 0+ | 1+ }는 { 0 , 1 , 00 , 11 , 000 , 111 , …
(100 | 11)+ = { 100 , 11 , 10011 , 11100 , 1110011100 , 1001111111100100, … }
최근에 박사님이 검사를 하셨습니다.
김동혁은 아레시보 전파망원경에서 별 베가(직녀성)로부터 받은 전파 중 일부를 분석해 전파의 패턴을 다음과 같이 기록했다.
(100+1+ | 01)+
박사 김동혁은 서로 다른 라디오 기록 중에서 위와 같은 패턴의 라디오파를 식별하는 프로그램이 필요하다.
이것을 할 수 있는 프로그램을 작성하세요.
기입
테스트 케이스의 수 T는 첫 번째 입력 라인에 지정됩니다.
다음 줄부터는 공백 없이 { 0, 1 }로만 구성된 문자열이 주어지며 각 테스트 케이스에 대한 전파를 나타냅니다.
문자열 길이의 범위는 (1 ≤ N ≤ 200)입니다.
누르다
각 테스트 케이스에 대해 주어진 전파가 문제에서 제안한 패턴과 일치하면 “YES”를 반환하고 일치하지 않으면 “NO”를 반환합니다.
출력 문자열은 모두 대문자입니다.
예제 입력
삼
10010111
011000100110001
0110001011001
샘플 출력
아니요
아니요
예
>> BOJ\1013_Contact.py
삼
10010111
아니요
011000100110001
아니요
0110001011001
예
re 모듈: 정규식 엔진에 대한 인터페이스를 제공합니다.
컴파일 방법: 정규식 패턴 입력
Fullmatch 방식: 입력 패턴과 문자열이 여분의 부분을 남기지 않고 완벽하게 일치하는지 확인합니다.
일관성이 없으면 없음.
“””
import re
import sys
input = sys.stdin.readline
p = re.compile('(100+1+|01)+')
for i in range(int(input())):
s = input().strip()
if p.fullmatch(s):
print("YES")
else:
print("NO")