package oSWExpertAcademy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.TreeSet;
public class D2_1974 {
static TreeSet<Integer> set = new TreeSet<Integer>();
static int isValid(int puzzle[][]) {
//Horizontal & Vertical 체크
for(int i=0; i<9; i++) {
set.clear();
for(int j=0; j<9; j++) {
set.add(puzzle[i][j]);
}
if(set.size() < 9)
return 0;
}
//Square
for(int i=0; i<3; i++) {
for(int j=0; j<3; j++) {
set.clear();
//3*3씩 계산해준다.
for(int k=0; k<3; k++) {
for(int l=0; l<3; l++) {
set.add(puzzle[3*i+k][3*j+l]);
}
}
if(set.size() < 9) {
return 0;
}
}
}
return 1;
}
public static void main(String[]args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
int count = Integer.parseInt(br.readLine());
int[][] puzzle = new int[9][9];
//테스트 카운팅
for(int c=1; c<=count; c++) {
//2중 for문 돌려서 퍼즐에 값넣기
for(int i=0; i<9; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for(int j=0; j<9; j++) {
puzzle[i][j] = Integer.parseInt(st.nextToken());
//2차원 배열 값 입력 확인
//System.out.print(puzzle[i][j]+" ");
}
//2차원 배열 값 입력 확인
//System.out.println();
}
System.out.println("#"+c+" "+isValid(puzzle));
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
댓글