본문 바로가기
알고리즘

프로그래머스 혼자서 하는 틱택토

by eunyoung 2023. 4. 5.

난이도


Level2

 

 

풀이


def isWin(board,x,y):
    
    if board[x]=='OOO' or board[x]=='XXX':
        return True
    if board[0][y]==board[1][y]==board[2][y]=='O' or board[0][y]==board[1][y]==board[2][y]=='X':
        return True
    if x-y==0:
        if board[0][0]==board[1][1]==board[2][2]=='O' or board[0][0]==board[1][1]==board[2][2]=='X':
            return True
    if x+y==2:
        if board[0][2]==board[1][1]==board[2][0]=='O' or board[0][2]==board[1][1]==board[2][0]=='X':
            return True
                
    return False
    
def solution(board):
    answer = 1
    cntO=0
    cntX=0
    OList=[]
    XList=[]
    
    for i in range(3):
        for j in range(3):
            if board[i][j]=='O':
                cntO+=1
                OList.append([i,j])
            elif board[i][j]=='X':
                cntX+=1
                XList.append([i,j])
                
    for ox,oy in OList:
        if isWin(board,ox,oy)==True:
            if cntX+1!=cntO:
                answer=0
    
    for xx,xy in XList:
        if isWin(board,xx,xy)==True:
            if cntO!=cntX:
                answer=0
                
    for ox,oy in OList:
        for xx,xy in XList:
            if isWin(board,ox,oy)==True and isWin(board,xx,xy)==True:
                answer=0
                
    if cntO>=cntX+2:
        answer=0
        
    if cntX>cntO:
        answer=0
    
    return answer