728x90
반응형
검증 단계
1. 가로줄 검증
: 초기화하면서 확인
가로줄 검증을 통과한 경우만 수행
-> 중복 발견시, break
2. 세로줄 검증
3. 3x3 검증
package sw1974;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.io.FileInputStream;
/*
사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
*/
class Solution
{
public static void main(String args[]) throws Exception
{
/*
아래의 메소드 호출은 앞으로 표준 입력(키보드) 대신 input.txt 파일로부터 읽어오겠다는 의미의 코드입니다.
여러분이 작성한 코드를 테스트 할 때, 편의를 위해서 input.txt에 입력을 저장한 후,
이 코드를 프로그램의 처음 부분에 추가하면 이후 입력을 수행할 때 표준 입력 대신 파일로부터 입력을 받아올 수 있습니다.
따라서 테스트를 수행할 때에는 아래 주석을 지우고 이 메소드를 사용하셔도 좋습니다.
단, 채점을 위해 코드를 제출하실 때에는 반드시 이 메소드를 지우거나 주석 처리 하셔야 합니다.
*/
System.setIn(new FileInputStream("src/sw1974/input.txt"));
/*
표준입력 System.in 으로부터 스캐너를 만들어 데이터를 읽어옵니다.
*/
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
/*
여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
*/
for(int test_case = 1; test_case <= T; test_case++)
{
int n=9;
int[][] arr = new int[n][n];
boolean flag = true;
for(int i=0;i<n;i++){
Map<Integer, Integer> map = new HashMap<>();
for(int j=0;j<n;j++){
arr[i][j]=sc.nextInt();
//System.out.print(arr[i][j]+" ");
if(map.containsKey(arr[i][j])) flag=false;
map.put(arr[i][j], 0);
}
//System.out.println();
}
e: if(flag) {
for (int i = 0; i < n; i++) {
Map<Integer, Integer> map = new HashMap<>();
for (int j = 0; j < n; j++) {
//System.out.print(arr[i][j]+" ");
if (map.containsKey(arr[j][i])) {
flag = false;
break e;
}
map.put(arr[j][i], 0);
}
//System.out.println();
}
//3x3
//i: 0 1 2 a: 0~2, 3~5, 6~8
//j: 0 1 2 b: 0, 3, 6
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
Map<Integer, Integer> map = new HashMap<>();
for(int a=3*i; a<(i+1)*3;a++){
for(int b=3*j; b<(j+1)*3;b++){
if(map.containsKey(arr[a][b])) {
flag=false;
break e;
}
map.put(arr[a][b], 0);
}
}
}
}
}
//i) 가로줄
//ii) 세로줄
//ii) 3x3칸
if(!flag){
System.out.println("#"+test_case+" "+0);
}else{
System.out.println("#"+test_case+" "+1);
}
}
}
}
728x90
반응형
'Java > Java 알고리즘 SWEA' 카테고리의 다른 글
[SW 아카데미] 1989. 초심자의 회문 검사 (0) | 2022.10.24 |
---|---|
[SW 아카데미] 2007. 패턴 마디의 길이 (0) | 2022.10.24 |
[SW 아카데미] 2805. 농작물 수확하기 # (+ char형을 int형으로 변환) (0) | 2022.10.24 |
[SW 아카데미] 2001. 파리 퇴치 # (0) | 2022.10.23 |
[SW 아카데미] 1926. 간단한 369게임 (0) | 2022.10.23 |