Leetcode 1275. Find Winner on a Tic Tac Toe Game

Mingyu Jeon·2020년 6월 8일
0
post-thumbnail


제약사항에 보면 틱택토 맵의 크기가 고정되어 있다는 것을 알 수 있으므로 비록 예쁜 코드는 아니지만 straight forward한 방식으로 풀 수 있다.

# Runtime: 24 ms, faster than 97.60% of Python3 online submissions for Find Winner on a Tic Tac Toe Game.
# Memory Usage: 13.8 MB, less than 67.71% of Python3 online submissions for Find Winner on a Tic Tac Toe Game.
# Time: O(n)
class Solution:
    def tictactoe(self, moves: List[List[int]]) -> str:
        mp = [[0*3 for _ in range(3)] for _ in range(3)]
        winner = ''
        first, second, third = 0, 0, 0
        
        # tic-tac-toe map 
        for i, (x, y) in enumerate(moves):
            if i % 2 : mp[x][y] = -1
            else: mp[x][y] = 1
        
        # row by row
        for i, group in enumerate(mp):
            if sum(group) == 3: return 'A'
            elif sum(group) == -3: return 'B'
            else:
                first += group[0]
                second += group[1]
                third += group[2]
        
        # col by col
        if first == 3 or second == 3 or third == 3: return 'A'
        elif first == -3 or second == -3 or third == -3: return 'B'
            
        # diagonal by diagonal
        if (mp[0][0] + mp[1][1] + mp[2][2]) == 3 or (mp[0][2] + mp[1][1] + mp[2][0]) == 3: return 'A'
        elif (mp[0][0] + mp[1][1] + mp[2][2]) == -3 or (mp[0][2] + mp[1][1] + mp[2][0]) == -3: return 'B'
        
        if len(moves) == 9 and not winner: return 'Draw'
        else: return 'Pending'

https://leetcode.com/problems/find-winner-on-a-tic-tac-toe-game/

0개의 댓글