[프로그래머스] 혼자서 하는 틱택토 - 구현

JinUk Lee·2023년 6월 16일
0

프로그래머스

목록 보기
32/48

https://school.programmers.co.kr/learn/courses/30/lessons/160585



def solution(board):
    answer = 1
    O_tic = False
    X_tic = False
    O_cnt = 0
    X_cnt = 0
    for i in range(3):
        for j in range(3):
            if board[i][j]=='O':
                O_cnt+=1
            if board[i][j]=='X':
                X_cnt+=1
                

    if 'OOO' in board:
        O_tic = True
    for i in range(3):
        if board[0][i] == 'O' and board[1][i] == 'O' and board[2][i] == 'O':
            O_tic = True

    if board[0][0] == 'O' and board[1][1] == 'O' and board[2][2] == 'O':
        O_tic = True
    if board[0][2] == 'O' and board[1][1] == 'O' and board[2][0] == 'O':
        O_tic = True

    if 'XXX' in board:
        X_tic = True
    for i in range(3):
        if board[0][i] == 'X' and board[1][i] == 'X' and board[2][i] == 'X':
            X_tic = True
            
    if board[0][0] == 'X' and board[1][1] == 'X' and board[2][2] == 'X':
        X_tic = True
    if board[0][2] == 'X' and board[1][1] == 'X' and board[2][0] == 'X':
        X_tic = True

    if O_tic and X_tic:
        answer = 0
    if O_cnt >= X_cnt + 2:
        answer = 0
    if X_cnt > O_cnt:
        answer = 0
    if O_tic and (X_cnt == O_cnt):
        answer = 0
    if X_tic and (O_cnt > X_cnt):
        answer = 0

    return answer

디폴트를 1로 두고 규칙을 지켜서 진행했을때 나오는 게임 상황이 아니라면 0을 입력했다.

여기서 말하는 규칙을 지키지 않은 상황을 구하기 위해 2가지를 먼저 구해준다.

1. O의 빙고 여부
2. X의 빙고 여부
3. O의 갯수
4. X의 갯수

이 4가지를 구한뒤 다음과 같은 상황을 제외해주었다.

1. O,X 동시에 빙고인 상황
2. O의 갯수가 X의 갯수보다 2개 이상 많은 상황
3. X의 갯수가 O의 갯수보다 더 많은 상황
4. O만 빙고인데, X와 O의 갯수가 똑같은 상황
5. X만 빙고인데, O의 갯수가 X의 갯수보다 많은 상황

이 상황들을 제외하고는 규칙을 지켜서 틱택토를 진행한 게임으로 볼 수 있다.

profile
개발자 지망생

0개의 댓글