1V = [[(-1, 0), (1, 0)], [(0, -1), (0, 1)], [(-1, -1), (1, 1)], [(-1, 1), (1, -1)]]
2P = [[(1, 0), (1, 1), (1, 2)], [(0, 1), (1, 1), (2, 1)], [(1, 1)], [(1, 1)]]
3
4def solution(board):
5 answer = -1
6 o_line = 0
7 x_line = 0
8
9 for i, p_list in enumerate(P):
10 for p in p_list:
11 if board[p[0]][p[1]] != '.' and board[p[0]][p[1]]== board[p[0]+V[i][0][0]][p[1]+V[i][0][1]] == board[p[0]+V[i][1][0]][p[1]+V[i][1][1]]:
12 if board[p[0]][p[1]] == 'O':
13 o_line += 1
14 elif board[p[0]][p[1]] == 'X':
15 x_line += 1
16
17 o_cnt = 0
18 x_cnt = 0
19
20
21 for i in ''.join(board):
22 if i == 'O':
23 o_cnt += 1
24 elif i == 'X':
25 x_cnt += 1
26
27 if not (0 <= o_cnt - x_cnt <= 1):
28 return 0
29 if o_line == 1:
30 if o_cnt - x_cnt != 1:
31 return 0
32 if x_line == 1:
33 if o_cnt != x_cnt:
34 return 0
35 if o_line != 0 and o_line == x_line:
36 return 0
37
38 return 1
문제
- 틱택토 3X3 보드판이 주어진다. (‘O’, ‘X’, ‘.')
- 규칙을 지켜서 나올수 있는 보드인지 여부를 출력하여라
- TC
- input
[“O.X”, “.O.”, “..X”]
- ouput
1
- input
해결방법
- O의 줄 수, X의 줄 수, O의 개수, X의 개수를 구했다
- 특히, 누가 이겼는지에 따라서 조건을 따져야한다
- 예) O가 이긴 경우 -> O의 개수 = X의 개수 + 1