import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class SWEA1974 {
static int[][] sudoku = new int[9][9];
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
StringTokenizer st;
for (int tc = 1; tc <= T; tc++) {
for (int i = 0; i < 9; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < 9; j++) {
sudoku[i][j] = Integer.parseInt(st.nextToken());
}
}
// sb.append("#").append(tc).append(" ").append(check()).append("\n");
sb.append(String.format("#%d %d%n", tc, check()));
}
br.close();
System.out.println(sb);
}
private static int check() {
// 1row씩 돌아가면서 check
for (int i = 0; i < 9; i++) {
int sum = 0;
for (int j = 0; j < 9; j++) {
sum += sudoku[i][j];
}
if (sum != 45)
return 0;
}
// 1col씩 돌아가면서 check
for (int i = 0; i < 9; i++) {
int sum = 0;
for (int j = 0; j < 9; j++) {
sum += sudoku[j][i];
}
if (sum != 45)
return 0;
}
// 9칸씩 돌아가면서 check
for (int i = 0; i < 9; i += 3) {
for (int j = 0; j < 9; j += 3) {
if (!areaCheck(i, j))
return 0;
}
}
// 45 check로 해줄 때 예외는 전부 다 5로 들어 경우 밖에 없다 check
if (sudoku[0][0] == sudoku[0][1])
return 0;
return 1;
}
private static boolean areaCheck(int r, int c) {
int sum = 0;
for (int i = r; i < r + 3; i++) {
for (int j = c; j < c + 3; j++) {
sum += sudoku[i][j];
}
}
if (sum != 45)
return false;
return true;
}
}
솔직히 그냥 아이디어로 푼 문제
재귀 연습해보기 좋은 문제다.
'온라인 저지 > SWEA' 카테고리의 다른 글
[SWEA/Java] 1859 백만장자 프로젝트 (0) | 2022.02.20 |
---|---|
[SWEA/Java] 5644 무선 충전 (0) | 2022.02.18 |
[SWEA/Java] 4012 요리사 (0) | 2022.02.16 |
[SWEA/Java] 6808 규영이와 인영이의 카드게임 (0) | 2022.02.16 |
[SWEA/Java] 5432 쇠막대기 자르기 (0) | 2022.02.13 |
댓글