# deque 이용해서 풀었는데 런타임 에러 남..
from collections import deque
def contact(spread):
while len(spread) > 0 :
if spread[0] == '0' :
if spread[1] == '1' :
spread.popleft()
spread.popleft()
else :
print("NO")
return False
else : # 1로 시작하는 경우
spread.popleft() # 먼저 1 뺌
if len(spread) < 3 : # 최소 1001
print("NO")
return False
for i in range(2): # 0 2개 빼기
if spread.popleft() != '0':
print("NO")
return False
# 여기 부터는 000~111 무조건 1로 끝나면 됨.
while len(spread) > 0 :
tmp = spread[0]
if tmp == '1' :
if len(spread) == 1 or spread[1] == '0' :
spread.popleft()
break
spread.popleft()
if tmp != '1' :
print("NO")
return False
print("YES")
return True
t = int(input())
data = []
for i in range(t):
data.append( deque(input()) )
for i in range(t):
contact(data[i])
# 정규 표현식으로 풀면 된다고 한다...
-> 정규 표현식 공부하고 다시 도전!
'백준 > solved.ac' 카테고리의 다른 글
# 1011 Fly me to the Alpha Centauri (0) | 2020.10.02 |
---|---|
20201001 (0) | 2020.10.01 |
# 3003 # 3046 #5337 # 5338 (0) | 2020.10.01 |
# 1000 #1001 # 1271 # 1550 # 2338 # 2475 # 2557 # 2558 # 2845 # 2914 (0) | 2020.10.01 |