โ ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/160585
๐๏ธ ์์ด๋์ด
1. 3x3์์ 3๊ฐ๊ฐ ์ฐ๊ฒฐ๋ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ 8๊ฐ์ด๋ค.
a. 8๊ฐ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ง์ ๋ง๋ค์ด์ค๋ค.
2. ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋ฉด์ ํด๋น ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ค์ด ๊ฐ์ผ๋ฉด winner list์ ์ ์ฅํด์ค๋ค.
3. board์์ O๊ณผ X์ ๊ฐ์๋ฅผ ์ ์ฅํ๋ค.
4. ์ด ํ์ด ์ ์์ ์ธ์ง ํ์ธํ๋ค.
a. winner_list์ ๊ธธ์ด๋ 3 ์ด์์ผ ์ ์๋ค. (O ๋๋ X๊ฐ ์ฌ๋ฌ ๊ฐ ์์ฑ๋ ๊ฒฝ์ฐ)
b. winner_list์์ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ํ ํ ๊ธธ์ด๋ 2์ผ ์ ์๋ค. (O, X ๋ชจ๋ ์์ฑํ ๊ฒฝ์ฐ)
c. winner_list์ ๊ธธ์ด๊ฐ 1์ธ ๊ฒฝ์ฐ
ใฑ. ์น์๊ฐ O์ธ ๊ฒฝ์ฐ -> O๊ฐ ์ ๊ณต์ด๊ธฐ ๋๋ฌธ์ O๊ฐ์๊ฐ X๊ฐ์๋ณด๋ค 1์ด ๋ง์์ผ ํ๋ค.
ใด. ์น์๊ฐ X์ธ ๊ฒฝ์ฐ -> " O์ ๊ฐ์์ X์ ๊ฐ์๊ฐ ๊ฐ์์ผํ๋ค.
d. winner_list์ ๊ธธ์ด๊ฐ 0์ธ ๊ฒฝ์ฐ, O์ ๊ฐ์๋ X์ ๊ฐ์์ ๊ฐ๊ฑฐ๋ 1๊ฐ ์ปค์ผํ๋ค.
๐ป ํ์ด
def solution(board):
wins = [[[0,0], [0,1], [0,2]],
[[1,0], [1,1], [1,2]],
[[2,0], [2,1], [2,2]],
[[0,0], [1,0], [2,0]],
[[0,1], [1,1], [2,1]],
[[0,2], [1,2], [2,2]],
[[0,0], [1,1], [2,2]],
[[2,0], [1,1], [0,2]]]
# ์น์ ํ์ธ
winner_list = []
for win1, win2, win3 in wins:
if board[win1[0]][win1[1]] == board[win2[0]][win2[1]] == board[win3[0]][win3[1]]:
winner = board[win1[0]][win1[1]]
if winner != '.':
winner_list.append(winner)
# O, X ๊ฐ๊ฐ์ ๊ฐ์
o_num = sum(map(lambda x: x.count('O'), board))
x_num = sum(map(lambda x: x.count('X'), board))
# 3๊ฐ๊ฐ ์ฐ๊ฒฐ๋ ๊ฐ์๊ฐ 2์ด์์ด๊ฑฐ๋ O, X ๋ชจ๋ ์์ฑ๋ ๊ฒฝ์ฐ
if len(winner_list) > 2 or len(set(winner_list)) == 2:
return 0
# ์น์๊ฐ O ๋๋ X์ธ ๊ฒฝ์ฐ
elif len(winner_list) == 1:
if winner_list[0] == 'O':
return 1 if o_num == x_num + 1 else 0
else:
return 1 if o_num == x_num else 0
# ์น์๊ฐ ์๋ ๊ฒฝ์ฐ
else:
return 1 if o_num == x_num + 1 or o_num == x_num else 0
'Algorithm | Language > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[programmers/Lv.2] ๋ ํ ํฉ ๊ฐ๊ฒ ๋ง๋ค๊ธฐ (0) | 2023.03.10 |
---|---|
[programmers/Lv.2] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (1) | 2023.03.10 |
[programmers/Lv.2] [1์ฐจ] ์บ์ (0) | 2023.03.06 |
[programmers/Lv.2] ํ์ผ๋ช ์ ๋ ฌ (0) | 2023.02.23 |
[programmers/Lv.2] ํผ๋ก๋ (0) | 2023.02.23 |