코딩테스트/Python
[python] 혼자서 하는 틱택토
nahkim
2023. 4. 7. 15:34
📜 접근 방법
- O가 이길경우 -> O의 갯수가 1개 많아야함
- X가 이길 경우 -> X의 갯수와 O의 갯수가 같아야함
- 칸을 다 채우고 비길 경우 -> O의 갯수가 1개 많아야함
- 경기가 진행중일 경우 -> X의 갯수와 O의 갯수가 같거나 O의 갯수가 1개 많아야함
❌ 실패 코드
대각선 부분 코드를 잘못 짰었음
✅ 정답 코드
def solution(board):
o_count = 0
x_count = 0
for n in board:
o_count += n.count("O")
x_count += n.count("X")
if (o_count - x_count != 0) and (o_count - x_count != 1):
return 0
# 가로
x_win = 0
o_win = 0
for n in board:
if n.count("O") == 3:
o_win += 1
if n.count("X") == 3:
x_win += 1
# 세로
for i in range(len(board)):
if board[0][i] == board[1][i] == board[2][i] == "O":
o_win += 1
if board[0][i] == board[1][i] == board[2][i] == "X":
x_win += 1
# 대각선
if board[0][0] == board[1][1] == board[2][2] == 'O':
o_win += 1
elif board[0][0] == board[1][1] == board[2][2] == 'X':
x_win += 1
if board[0][2] == board[1][1] == board[2][0] == 'O':
o_win += 1
elif board[0][2] == board[1][1] == board[2][0] == 'X':
x_win += 1
# if x_win and o_win:
# return 0
if o_win == 1 and o_count - x_count != 1:
return 0
if x_win == 1 and o_count - x_count != 0:
return 0
return 1
💡알게 된점
조건에 부합하는 경우를 제외시켜야 하는데 코드를 잘 못짰다.