def solution(board):
# O와 X의 개수를 세기
count_O = sum(row.count('O') for row in board)
count_X = sum(row.count('X') for row in board)
# 승리 조건을 확인하는 함수
def check_winner(player):
# 가로, 세로, 대각선 체크
return any(
all(board[i][j] == player for j in range(3)) for i in range(3)
) or any(
all(board[j][i] == player for j in range(3)) for i in range(3)
) or all(board[i][i] == player for i in range(3)) or all(board[i][2 - i] == player for i in range(3))
win_O = check_winner('O')
win_X = check_winner('X')
# 규칙 검증
if count_O < count_X or count_O > count_X + 1:
return 0
if win_O and win_X:
return 0
if win_O and count_O != count_X + 1:
return 0
if win_X and count_O != count_X:
return 0
return 1
# 예시 테스트
print(solution(["O.X", ".O.", "..X"])) # 1
print(solution(["OOO", "...", "XXX"])) # 0
print(solution(["...", ".X.", "..."])) # 0
print(solution(["...", "...", "..."])) # 1
승리 조건 검사를 위해 별도의 함수를 정의하여 사용하기