알고리즘

[Python | 프로그래머스 | Lv_2] 혼자서 하는 틱택토

deedee2 2024. 4. 28. 23:31
728x90

😉 아이디어

1. 완성 틱택토 개수, O or X 개수 확인

2. 틱택토의 게임이 완성되지 않는 경우의 수 예외처리

😉 코드

oTic = 0
xTic = 0

def solution(board):
    answer = -1
    
    xCnt = 0
    oCnt = 0

    def checkTic(s):
        global oTic
        global xTic
        
        if s == 'OOO':
            oTic += 1
        elif s == 'XXX':
            xTic += 1
    
    for i in range(0, 3):
        checkTic(board[i])
        vertical = board[0][i] + board[1][i] + board[2][i]
        checkTic(vertical)
        
        for j in board[i]:
            if j == 'O':
                oCnt += 1
            elif j == 'X':
                xCnt += 1

    down = board[0][0] + board[1][1] + board[2][2]
    up = board[0][2] + board[1][1] + board[2][0]
    
    checkTic(down)
    checkTic(up)
    
    # X의 갯수가 O보다 많을 수 없음
    if xCnt > oCnt or abs(oCnt - xCnt) > 1:
        return 0
    
    # 일치된 틱택토가 2개 이상이면 틀림
    if xTic > 0 and oTic > 0:
        return 0
    
    # 하나의 틱택토 완성 시 O, X 갯수 확인
    if xTic > 0 and (xCnt != oCnt):
        return 0
    
    if oTic > 0 and (xCnt + 1 != oCnt):
        return 0
    
    return 1

✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/160585#