알고리즘/baekjoon
[ baekjoon ] 틱택토 7682번 ( python )
Yanoo
2021. 5. 29. 16:24
728x90
반응형
문제
백준 7682 틱택토 풀이 ( 파이썬 )
https://www.acmicpc.net/problem/7682
7682번: 틱택토
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 줄은 9개의 문자를 포함하며, 'X', 'O', '.' 중 하나이다. '.'은 빈칸을 의미하며, 9개의 문자는 게임판에서 제일 윗 줄 왼쪽부터의 순서이다. 입
www.acmicpc.net
풀이
O가 이기려면 X와 O의 개수가 같을 때 뿐이고
X가 이기려면 X의 개수가 O보다 1개 많을 때이다.
이걸 생각하고 경우를 나눴다.
def flag(arr,equ):
#print(arr,equ)
if arr[0][0]==arr[0][1]==arr[0][2]==equ:
return True
if arr[1][0]==arr[1][1]==arr[1][2]==equ:
return True
if arr[2][0]==arr[2][1]==arr[2][2]==equ:
return True
if arr[0][0]==arr[1][0]==arr[2][0]==equ:
return True
if arr[0][1]==arr[1][1]==arr[2][1]==equ:
return True
if arr[0][2]==arr[1][2]==arr[2][2]==equ:
return True
if arr[0][0]==arr[1][1]==arr[2][2]==equ:
return True
if arr[2][0]==arr[1][1]==arr[0][2]==equ:
return True
return False
while True:
string=input()
if string=="end":
break
else:
xcnt=0
ocnt=0
index=0
arr=[[0]*3 for _ in range(3)]
for i in range(3):
for j in range(3):
arr[i][j]=string[index]
if string[index]=="X":
xcnt+=1
if string[index]=="O":
ocnt+=1
index+=1
if xcnt>ocnt+1:
print("invalid")
continue
if ocnt>xcnt:
print("invalid")
continue
if ocnt==xcnt:
if flag(arr,"O") and not flag(arr,"X"):
print("valid")
continue
if ocnt+1==xcnt:
if flag(arr,"X") and not flag(arr,"O"):
print("valid")
continue
if xcnt==5 and ocnt==4:
if not flag(arr,"O"):
print("valid")
continue
print("invalid")
728x90
반응형