๋ฌธ์ ์ค๋ช
ํฑํํ ๋ ๋ ์ฌ๋์ด ํ๋ ๊ฒ์์ผ๋ก ์ฒ์์ 3x3์ ๋น์นธ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ฒ์ํ์ ์ ๊ณต์ด "O", ํ๊ณต์ด "X"๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๋น์นธ์ ํ์ํ๋ ๊ฒ์์ ๋๋ค. ๊ฐ๋ก, ์ธ๋ก, ๋๊ฐ์ ์ผ๋ก 3๊ฐ๊ฐ ๊ฐ์ ํ์๊ฐ ๋ง๋ค์ด์ง๋ฉด ๊ฐ์ ํ์๋ฅผ ๋ง๋ ์ฌ๋์ด ์น๋ฆฌํ๊ณ ๊ฒ์์ด ์ข ๋ฃ๋๋ฉฐ 9์นธ์ด ๋ชจ๋ ์ฐจ์ ๋ ์ด์ ํ์๋ฅผ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ๋ฌด์น๋ถ๋ก ๊ฒ์์ด ์ข ๋ฃ๋ฉ๋๋ค.
ํ ์ผ์ด ์์ด ํ๊ฐํ ๋จธ์ฑ์ด๋ ๋ ์ฌ๋์ด ํ๋ ๊ฒ์์ธ ํฑํํ ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ํผ์์ ํ๋ ค๊ณ ํฉ๋๋ค.
- ํผ์์ ์ ๊ณต๊ณผ ํ๊ณต์ ๋ ๋ค ๋งก๋๋ค.
- ํฑํํ ๊ฒ์์ ์์ํ ํ "O"์ "X"๋ฅผ ํผ์์ ๋ฒ๊ฐ์ ๊ฐ๋ฉด์ ํ์๋ฅผ ํ๋ฉด์ ์งํํ๋ค.
ํฑํํ ๋ ๋จ์ํ ๊ท์น์ผ๋ก ๊ฒ์์ด ๊ธ๋ฐฉ ๋๋๊ธฐ์ ๋จธ์ฑ์ด๋ ํ ๊ฒ์์ด ์ข ๋ฃ๋๋ฉด ๋ค์ 3x3 ๋น์นธ์ ๊ทธ๋ฆฐ ๋ค ๋ค์ ๊ฒ์์ ๋ฐ๋ณตํ์ต๋๋ค. ๊ทธ๋ ๊ฒ ํฑํํ ์ ์ญ ํ์ ํ๋๋ ๋จธ์ฑ์ด๋ ๊ฒ์ ๋์ค์ ๋ค์๊ณผ ๊ฐ์ด ๊ท์น์ ์ด๊ธฐ๋ ์ค์๋ฅผ ํ์ ์๋ ์์ต๋๋ค.
- "O"๋ฅผ ํ์ํ ์ฐจ๋ก์ธ๋ฐ "X"๋ฅผ ํ์ํ๊ฑฐ๋ ๋ฐ๋๋ก "X"๋ฅผ ํ์ํ ์ฐจ๋ก์ธ๋ฐ "O"๋ฅผ ํ์ํ๋ค.
- ์ ๊ณต์ด๋ ํ๊ณต์ด ์น๋ฆฌํด์ ๊ฒ์์ด ์ข ๋ฃ๋์์์๋ ๊ทธ ๊ฒ์์ ์งํํ๋ค.
๊ฒ์ ๋์ค ๊ฒ์ํ์ ๋ณธ ์ด๋ ์๊ฐ ๋จธ์ฑ์ด๋ ๋ณธ์ธ์ด ์ค์๋ฅผ ํ๋์ง ์๋ฌธ์ด ์๊ฒผ์ต๋๋ค. ํผ์์ ํฑํํ ๋ฅผ ํ๊ธฐ์ ๊ฒ์ํ๋ ๊ณผ์ ์ ์ง์ผ๋ณธ ์ฌ๋์ด ์์ด ์ด๋ฅผ ์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฒ์ํ๋ง ๋ดค์ ๋ ์ค์ ๋ก ํฑํํ ๊ท์น์ ์ง์ผ์ ์งํํ์ ๋ ๋์ฌ ์ ์๋ ์ํฉ์ธ์ง๋ ํ๋จํ ์ ์์ ๊ฒ ๊ฐ๊ณ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ๊ฒ์์ ์ด์ด์ ํ๋ ค๊ณ ํฉ๋๋ค.
๋จธ์ฑ์ด๊ฐ ํผ์์ ๊ฒ์์ ์งํํ๋ค ์๋ฌธ์ด ์๊ธด ํฑํํ ๊ฒ์ํ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฌธ์์ด ๋ฐฐ์ด board๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด ๊ฒ์ํ์ด ๊ท์น์ ์ง์ผ์ ํฑํํ ๋ฅผ ์งํํ์ ๋ ๋์ฌ ์ ์๋ ๊ฒ์ ์ํฉ์ด๋ฉด 1์ ์๋๋ผ๋ฉด 0์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- board์ ๊ธธ์ด = board[i]์ ๊ธธ์ด = 3
- board์ ์์๋ ๋ชจ๋ "O", "X", "."์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- board[i][j]๋ i + 1ํ j + 1์ด์ ํด๋นํ๋ ์นธ์ ์ํ๋ฅผ ๋ํ๋
๋๋ค.
- "."์ ๋น์นธ์, "O"์ "X"๋ ํด๋น ๋ฌธ์๋ก ์นธ์ด ํ์๋์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
์ ์ถ๋ ฅ ์
board | result |
["O.X", ".O.", "..X"] | 1 |
["OOO", "...", "XXX"] | 0 |
["...", ".X.", "..."] | 0 |
["...", "...", "..."] | 1 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ์์ 1๋ฒ์ ๊ฒ์ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์ ๊ณต ํ๊ณต์ด ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ด ๋์์ ๋ ์ด๋ฌํ ๊ฒ์ํ์ด ๋์ฌ ์ ์์ต๋๋ค.
- 1ํ 1์ด → 1ํ 3์ด → 2ํ 2์ด → 3ํ 3์ด
- 1ํ 1์ด → 3ํ 3์ด → 2ํ 2์ด → 1ํ 3์ด
- 2ํ 2์ด → 1ํ 3์ด → 1ํ 1์ด → 3ํ 3์ด
- 2ํ 2์ด → 3ํ 3์ด → 1ํ 1์ด → 1ํ 3์ด
-
O.X .O. ..X
์ ์ถ๋ ฅ ์ #2
- ์์ 2๋ฒ์ ๊ฒ์ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.๊ท์น์ ์ง์ผ์ ์งํํ ํฑํํ ๋ผ๋ฉด ์ ๊ณต๊ณผ ํ๊ณต์ด ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๊ฐ๊ฐ 1ํ, 3ํ ์ค ๋ ์นธ์ฉ์ ํ์๋ฅผ ํ ๋ค 5๋ฒ์งธ ์ฐจ๋ก์ ์ ๊ณต์ด 1ํ์ ๊ฐ๋ก๋ก 3๊ฐ์ O๋ฅผ ์์ฑํ์ ๋ ์ข ๋ฃ๋๋ฏ๋ก ์ ์ด๋ ๋จธ์ฑ์ด๊ฐ ๊ฒ์์ด ์ข ๋ฃ๋ ํ์๋ ๊ณ์ ์งํํ๋ ์ค์๋ฅผ ํ๋ค๋ ๊ฒ์ ์ถ๋ก ํด ๋ณผ ์ ์๊ณ , ์ ์์ ์ธ ํฑํํ ์์๋ ์ด๋ฌํ ์ํฉ์ด ๋์ฌ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ 0์ return ํฉ๋๋ค.
-
OOO ... XXX
์ ์ถ๋ ฅ ์ #3
- ์์ 3๋ฒ์ 2ํ 2์ด์๋ง X๊ฐ ํ์๊ฐ ๋์ด์์ต๋๋ค. ์ ๊ณต O ํ์๊ฐ ์์ด X๋ง ์์ผ๋ฏ๋ก ๋จธ์ฑ์ด๊ฐ O๋ฅผ ํ์ํด์ผ ํ ๋ X๋ฅผ ํ์ํ๋ ์ค์๋ฅผ ํ๋ค๋ ๊ฒ์ ์ถ๋ก ํด ๋ณผ ์ ์๊ณ , ๊ท์น์ ์ง์ผ์ ์งํํ์ ๋๋ ์ด๋ฌํ ์ํฉ์ด ๋์ฌ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ 0์ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #4
- ์์ 4๋ฒ์ ๋น 3x3 ๊ฒ์ํ์ ๋๋ค. ์ ๊ณต์ด ์์ง ๋น์นธ์ ํ์ํ๊ธฐ ์ ์ ์ด๋ฌํ ์ํฉ์ด ๋์ฌ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ 1์ return ํฉ๋๋ค.
ํ์ด
- ํฑํํ ๋ฅผ ์์ข์ํด์ ๊ท์น์ ๋ชฐ๋ผ ํ์ฐธ ๊ทธ๋ ค๊ฐ๋ฉด์ ํ๋ค. ๋
ธ๊ฐ๋ค ๋ฌธ์ ๋ค...
- ๋น์ ์์ธ ์ผ์ด์ค 2๊ฐ, ์ ์์ธ ์ผ์ด์ค 4๊ฐ๋ฅผ ์ฐพ๊ณ ๋๋จธ์ง๋ ๋ค ๋น์ ์์ผ๋ก ํ๋ฉด ๋๋ ๋ฌธ์ ... ์ฝ์ง๋ฅด...
def solution(board):
answer = -1
Cnt_O,Cnt_X,Win_O,Win_X = 0,0,0,0
for b in board:
Cnt_O += b.count("O")
Cnt_X += b.count("X")
if Cnt_O + Cnt_X == 0:
return 1
if Cnt_O > Cnt_X + 1:
return 0
if Cnt_O < Cnt_X:
return 0
for i in range(3):
if board[0][i] == board[1][i] and board[1][i] == board[2][i]:
if board[1][i] == "O":
Win_O += 1
elif board[1][i] == "X":
Win_X += 1
if board[i][0] == board[i][1] and board[i][1] == board[i][2]:
if board[i][1] == "O":
Win_O += 1
elif board[i][1] == "X":
Win_X += 1
if board[0][0] == board[1][1] and board[1][1] == board[2][2]:
if board[1][1] == "O":
Win_O += 1
elif board[1][1] == "X":
Win_X += 1
if board[2][0] == board[1][1] and board[1][1] == board[0][2]:
if board[1][1] == "O":
Win_O += 1
elif board[1][1] == "X":
Win_X += 1
if Win_X == Win_O and Win_O == 0:
return 1
if Win_X == 0 and Win_O > 0:
if Cnt_X < Cnt_O:
return 1
if Win_X > 0 and Win_O == 0:
if Cnt_X == Cnt_O:
return 1
return 0
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.00ms, 10.4MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.00ms, 10.4MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.00ms, 10.4MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.00ms, 10.4MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 15 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.00ms, 10.3MB)
ํ
์คํธ 17 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 18 ใ ํต๊ณผ (0.00ms, 10.4MB)
ํ
์คํธ 19 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 20 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 21 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 22 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 23 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 24 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 25 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 26 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 27 ใ ํต๊ณผ (0.00ms, 10.3MB)
ํ
์คํธ 28 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 29 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 30 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 31 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 32 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 33 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 34 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 35 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 36 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 37 ใ ํต๊ณผ (0.00ms, 10.4MB)
ํ
์คํธ 38 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 39 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 40 ใ ํต๊ณผ (0.00ms, 10.3MB)
ํ
์คํธ 41 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 42 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 43 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 44 ใ ํต๊ณผ (0.00ms, 10.3MB)
ํ
์คํธ 45 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 46 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 47 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 48 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 49 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 50 ใ ํต๊ณผ (0.00ms, 10.2MB)
ํ
์คํธ 51 ใ ํต๊ณผ (0.00ms, 10.3MB)
- ๊ณ ์์ ํ์ด....
- ๊ฐ๋ก ์ธ๋ก ์ฒดํฌํ๋ ๋ถ๋ถ ๋๋ฌด ๊น๋ํ๊ณ ์ข๋ค.
# Check if there is a winning row, column, or diagonal
def check_win(player, board):
# Check rows
for i in range(3):
if all(cell == player for cell in board[i]):
return True
# Check columns
for j in range(3):
if all(board[i][j] == player for i in range(3)):
return True
# Check diagonals
if all(board[i][i] == player for i in range(3)):
return True
if all(board[i][2-i] == player for i in range(3)):
return True
return False
def solution(board):
num_x = sum(row.count('X') for row in board)
num_o = sum(row.count('O') for row in board)
if num_x - num_o > 0 or abs(num_x - num_o) > 1:
return 0
elif (check_win('O', board) and num_x != num_o - 1) or (check_win('X', board) and num_x != num_o):
return 0
return 1
์... ์๊ถ๋ฌธ์ ๋ชป ํ์ด์ ๋์ ์ฌ์ด ๋ฌธ์ ํ๊ณ ์๋๋ฐ... ์๊ถ ๋ฌธ์ ๋๋ฌด ์ฐ์ฐํ๋ค.
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๋จ์ด ๋ณํ -๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS) (0) | 2023.02.25 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ๋คํธ์ํฌ - ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS) (0) | 2023.02.24 |
ํ๋ก๊ทธ๋๋จธ์ค ๋์ถฉ ๋ง๋ ์ํ (0) | 2023.02.23 |
ํ๋ก๊ทธ๋๋จธ์ค ์๊ถ๋ํ (ํฌ๊ธฐ) (0) | 2023.02.23 |
ํ๋ก๊ทธ๋๋จธ์ค [3์ฐจ] ํ์ผ๋ช ์ ๋ฆฌ (1) | 2023.02.23 |