title: "[프로그래머스] 혼자서 하는 틱택토 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/160585"
description: "프로그래머스 Level 2 문제 [혼자서 하는 틱택토]의 풀이를 정리합니다."
def won(board, t):
# 가로줄 판단.
for row in board:
if row == [t, t, t]:
return True
# 세로줄 판단.
for col in range(3):
if [board[row][col] for row in range(3)] == [t, t, t]:
return True
# 대각선 판단.
if [board[0][0], board[1][1], board[2][2]] == [t, t, t]:
return True
if [board[2][0], board[1][1], board[0][2]] == [t, t, t]:
return True
return False
def solution(board):
board = [list(row) for row in board]
# O의 개수가 X의 개수보다 같거나 1 많아야 함.
o_count, x_count = 0, 0
for row in board:
for c in row:
if c == 'O':
o_count += 1
if c == 'X':
x_count += 1
if not (o_count == x_count or o_count == x_count + 1):
return 0
# O 혹은 X만 승리조건을 만족해야 함.
if won(board, 'O') and won(board, 'X'):
return 0
# O가 승리했다면 o_count == x_count + 1이어야 함.
if won(board, 'O') and o_count != x_count + 1:
return 0
# X가 승리했다면 o_count == x_count 여야 함.
if won(board, 'X') and o_count != x_count:
return 0
return 1
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges