원본 :
풀이
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];
}
}
}
과제 진행하기 (연습문제) (0) | 2023.05.08 |
---|---|
연속된 부분 수열의 합 (연습문제) (0) | 2023.05.08 |
두 원 사이의 정수 쌍 (연습문제) (0) | 2023.05.08 |
요격 시스템 (연습문제) (0) | 2023.05.08 |
정사각형으로 만들기 (코딩 기초 트레이닝) (0) | 2023.05.02 |
댓글 영역