https://school.programmers.co.kr/learn/courses/30/lessons/160585
def solution(board):
answer = 1
O_tic = False
X_tic = False
O_cnt = 0
X_cnt = 0
for i in range(3):
for j in range(3):
if board[i][j]=='O':
O_cnt+=1
if board[i][j]=='X':
X_cnt+=1
if 'OOO' in board:
O_tic = True
for i in range(3):
if board[0][i] == 'O' and board[1][i] == 'O' and board[2][i] == 'O':
O_tic = True
if board[0][0] == 'O' and board[1][1] == 'O' and board[2][2] == 'O':
O_tic = True
if board[0][2] == 'O' and board[1][1] == 'O' and board[2][0] == 'O':
O_tic = True
if 'XXX' in board:
X_tic = True
for i in range(3):
if board[0][i] == 'X' and board[1][i] == 'X' and board[2][i] == 'X':
X_tic = True
if board[0][0] == 'X' and board[1][1] == 'X' and board[2][2] == 'X':
X_tic = True
if board[0][2] == 'X' and board[1][1] == 'X' and board[2][0] == 'X':
X_tic = True
if O_tic and X_tic:
answer = 0
if O_cnt >= X_cnt + 2:
answer = 0
if X_cnt > O_cnt:
answer = 0
if O_tic and (X_cnt == O_cnt):
answer = 0
if X_tic and (O_cnt > X_cnt):
answer = 0
return answer
디폴트를 1로 두고 규칙을 지켜서 진행했을때 나오는 게임 상황이 아니라면 0을 입력했다.
여기서 말하는 규칙을 지키지 않은 상황을 구하기 위해 2가지를 먼저 구해준다.
1. O의 빙고 여부
2. X의 빙고 여부
3. O의 갯수
4. X의 갯수
이 4가지를 구한뒤 다음과 같은 상황을 제외해주었다.
1. O,X 동시에 빙고인 상황
2. O의 갯수가 X의 갯수보다 2개 이상 많은 상황
3. X의 갯수가 O의 갯수보다 더 많은 상황
4. O만 빙고인데, X와 O의 갯수가 똑같은 상황
5. X만 빙고인데, O의 갯수가 X의 갯수보다 많은 상황
이 상황들을 제외하고는 규칙을 지켜서 틱택토를 진행한 게임으로 볼 수 있다.