백준

[SWEA 1974] 스도쿠 검증 (java)

케굴 2023. 7. 26. 10:18
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.*;
import java.util.*;

class Solution
{
    static int T;
	static int[][] arr = new int[9][9];

	public static void main(String args[]) throws Exception
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		T = Integer.parseInt(br.readLine());

		for (int t = 1; t <= T; t++) {

			for (int i = 0; i < 9; i++) {
				StringTokenizer st = new StringTokenizer(br.readLine());
				for (int j = 0; j < 9; j++) {
					arr[i][j] = Integer.parseInt(st.nextToken());
				}
			}

			boolean isGood = true;
			// 1. 가로 검증
			for (int i = 0; i < 9; i++) {
				int[] check = new int[10];
				for (int j = 0; j < 9; j++) {
					check[arr[i][j]] += 1;
				}
				for (int r = 1; r <= 9; r++) {
					if (check[r] != 1) {
						isGood = false;
						break;
					}

				}

			}

			// 2. 세로 검증
			for (int i = 0; i < 9; i++) {
				int[] check = new int[10];
				for (int j = 0; j < 9; j++) {
					check[arr[j][i]] += 1;
				}
				for (int r = 1; r <= 9; r++) {
					if (check[r] != 1) {
						isGood = false;
						break;
					}

				}
			}

			// 3. 칸 검증
			for (int i = 0; i < 3; i++) {
				for (int j = 0; j < 3; j++) {
					// 9칸 돌기
					int[] check = new int[10];
					for (int k = 0; k < 3; k++) {
						for (int l = 0; l < 3; l++) {
							int a = i*3 + k;
							int b = j*3 + l;
									
							check[arr[i*3 + k][j*3 + l]] += 1;
						}
					}
					for (int r = 1; r <= 9; r++) {
						if (check[r] != 1) {
							isGood = false;
							break;
						}

					}
				}
			}

			if (isGood) {
				bw.write("#" + t + " " + 1 + "\n");
			} else {
				bw.write("#" + t + " " + 0 + "\n");
			}

		}
		bw.flush();
		bw.close();
		br.close();
	}
}