📜 접근 방법
- 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
💡알게 된점
조건에 부합하는 경우를 제외시켜야 하는데 코드를 잘 못짰다.
'코딩테스트 > Python' 카테고리의 다른 글
[python 백준 2696] 중앙값 구하기 (0) | 2023.04.09 |
---|---|
[python 백준 7662] 이중 우선순위 큐 (0) | 2023.04.08 |
[python 백준 1374] 강의실 (0) | 2023.04.07 |
[python] pccp 모의고사 2 실습용 로봇 (0) | 2023.03.22 |
[python] pccp 모의고사 1 외톨이 알파벳 (0) | 2023.03.18 |