def tickto(arr, t):
if t == arr[0] == arr[1] == arr[2]:
return True
if t == arr[3] ==arr[4] ==arr[5]:
return True
if t == arr[6] == arr[7] == arr[8]:
return True
if t ==arr[0] == arr[4] ==arr[8]:
return True
if t == arr[2] == arr[4] == arr[6]:
return True
if t == arr[0] == arr[3] == arr[6]:
return True
if t == arr[1] == arr[4] == arr[7]:
return True
if t == arr[2] == arr[5] == arr[8]:
return True
return False
while True:
a = input()
if a == "end":
break
else:
flag = True
arr = list(map(str, a))
xcnt = arr.count('X')
ocnt = arr.count('O')
if xcnt > ocnt+1:
print("invalid")
continue
if ocnt == xcnt :
if tickto(arr,'O') and not tickto(arr, 'X'):
print("valid")
continue
if ocnt >xcnt :
print("invalid")
continue
if ocnt +1 == xcnt :
if tickto(arr,'X') and not tickto(arr,'O'):
print("valid")
continue
if xcnt == 5 and ocnt ==4:
if not tickto(arr, "O"):
print("valid")
continue
print("invalid")
https://www.acmicpc.net/problem/7682
7682번: 틱택토
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 줄은 9개의 문자를 포함하며, 'X', 'O', '.' 중 하나이다. '.'은 빈칸을 의미하며, 9개의 문자는 게임판에서 제일 윗 줄 왼쪽부터의 순서이다. 입
www.acmicpc.net
기준점 : x의 개수 / o의 개수
함수안은 틱택토가 되는 라인을 True 로 내보내는 방식으로
갯수를 기준으로 틱택토가 되는 것을 뽑아낸다~!