프로그래머스/LV2
[프로그래머스 Lv2, python] - 혼자서 하는 틱택토
chyam_eun
2025. 5. 2. 14:01
https://school.programmers.co.kr/learn/courses/30/lessons/160585
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def is_winner(board, player):
# 가로 승리
for i in range(0, 9, 3):
if board[i] == board[i+1] == board[i+2] == player:
return True
# 세로 승리
for i in range(3):
if board[i] == board[i+3] == board[i+6] == player:
return True
# 대각선 승리
if board[0] == board[4] == board[8] == player:
return True
if board[2] == board[4] == board[6] == player:
return True
return False
def solution(board):
new = "".join(board)
o_count = new.count("O")
x_count = new.count("X")
# 기본 규칙 위반: 선공은 O
if x_count > o_count or o_count > x_count + 1:
return 0
o_win = is_winner(new, "O")
x_win = is_winner(new, "X")
# O와 X가 동시에 이김 = 잘못된 판
if o_win and x_win:
return 0
# O가 이겼으면 O는 X보다 1 많아야 함
if o_win and o_count != x_count + 1:
return 0
# X가 이겼으면 O와 X는 같아야 함
if x_win and o_count != x_count:
return 0
return 1