โ“  ๋ฌธ์ œ

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

 

+ Recent posts