상세 컨텐츠

본문 제목

혼자서 하는 틱택토 (연습문제)

프로그래머스 코딩테스트 풀이

by 발발개발 2023. 5. 8. 14:52

본문

원본 :

 

풀이

class Solution {
    public int solution(String[] board) {
        char[][] arr = new char[3][3];

        for (int i = 0; i < 3; i++) {
            arr[i] = board[i].toCharArray();
        }

        return isValid(arr) ? 1 : 0;
    }

    public static boolean isValid(char[][] arr) {
        int oCnt = 0;
        int xCnt = 0;

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (arr[i][j] == 'O') {
                    oCnt++;
                } else if (arr[i][j] == 'X') {
                    xCnt++;
                }
            }
        }

        return xCnt <= oCnt && oCnt - 1 <= xCnt && checkWin(arr, oCnt, xCnt);
    }

    public static boolean checkWin(char[][] arr, int oCnt, int xCnt) {
        if (oCnt > xCnt) {
            for (int i = 0; i < arr.length; i++) {
                if ('X' == arr[i][0] && arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2]) {
                    return false;
                }

                if ('X' == arr[0][i] && arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i]) {
                    return false;
                }
            }

            if ('X' == arr[0][0] && arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]) {
                return false;
            }

            return 'X' != arr[0][2] || arr[0][2] != arr[1][1] || arr[1][1] != arr[2][0];
        } else {
            for (int i = 0; i < arr.length; i++) {
                if ('O' == arr[i][0] && arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2]) {
                    return false;
                }

                if ('O' == arr[0][i] && arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i]) {
                    return false;
                }
            }

            if ('O' == arr[0][0] && arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]) {
                return false;
            }

            return 'O' != arr[0][2] || arr[0][2] != arr[1][1] || arr[1][1] != arr[2][0];
        }
    }
}

관련글 더보기

댓글 영역