본문 바로가기
Java/SW Expert Academy

1974. 스도쿠 검증

by GLOWWW 2021. 1. 9.
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();
        }
    }
}

'Java > SW Expert Academy' 카테고리의 다른 글

1966. 숫자를 정렬하자  (0) 2021.01.09
1970. 쉬운 거스름돈  (0) 2021.01.09
1976. 시각 덧셈  (0) 2021.01.07
1979. 어디에 단어가 들어갈 수 있을까  (0) 2021.01.07
1545. 거꾸로 출력해 보아요  (0) 2021.01.07

댓글