반응형
츄르사려고 코딩하는 코집사입니다.
1. [SW expert Academy] SWEA 1974번 스도쿠 검증 자바(Java)
1) 난이도 : D2
2) 문제번호 : 1974번
3) 문제 출처
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Psz16AYEDFAUq
2. 문제
스도쿠는 숫자퍼즐로, 가로 9칸 세로 9칸으로 이루어져 있는 표에 1 부터 9 까지의 숫자를 채워넣는 퍼즐이다.
같은 줄에 1 에서 9 까지의 숫자를 한번씩만 넣고, 3 x 3 크기의 작은 격자 또한, 1 에서 9 까지의 숫자가 겹치지 않아야 한다.
입력으로 9 X 9 크기의 스도쿠 퍼즐의 숫자들이 주어졌을 때, 위와 같이 겹치는 숫자가 없을 경우, 1을 정답으로 출력하고 그렇지 않을 경우 0 을 출력한다.
3. 제약사항
1) 퍼즐은 모두 숫자로 채워진 상태로 주어진다.
2) 입력으로 주어지는 퍼즐의 모든 숫자는 1 이상 9 이하의 정수이다.
4. 입력
입력은 첫 줄에 총 테스트 케이스의 개수 T가 온다.
다음 줄부터 각 테스트 케이스가 주어진다.
테스트 케이스는 9 x 9 크기의 퍼즐의 데이터이다.
5. 출력
테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
6. 풀이
- 입력받은 배열에서 순서대로, 행체크, 열체크, 격자체크를 하면 된다.
- 행체크는 각 줄마다 arr 배열에서 0이 있으면 false
- 열체크에서도 각 줄마다 arr 배열에서 0이 있으면 false
- 격자체크도 마찬가지
7. 소스 코드
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 테스트케이스 입력
int T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
int[][] map = new int[9][9];
boolean sign = true;
// 배열 입력
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
map[i][j] = sc.nextInt();
}
}
//행체크
for(int i=0;i<9;i++) {
int[] arr = new int[9];
for(int j=0;j<9;j++) {
arr[(map[i][j])-1]++;
}
for(int a=0;a<9;a++) {
if(arr[a]==0) {
sign = false;
break;
}
}
}
//열체크
for(int i=0;i<9;i++) {
int[] arr = new int[9];
for(int j=0;j<9;j++) {
arr[(map[j][i])-1]++;
}
for(int a=0;a<9;a++) {
if(arr[a]==0) {
sign = false;
break;
}
}
}
//격자체크
for(int i=0;i<=6;i+=3) {
for(int j=0;j<=6;j+=3) {
int[] arr = new int[9];
int r = i+3;
int c = j+3;
for(int a=i;a<r;a++) {
for(int b=j;b<c;b++) {
arr[(map[a][b]-1)]++;
}
}
for(int z=0;z<9;z++) {
if(arr[z]==0) {
sign=false;
break;
}
}
}
}
//최종
if(sign==true) {
System.out.printf("#%d %d\n",tc,1);
}else {
System.out.printf("#%d %d\n",tc,0);
}
}
}
}
반응형
'알고리즘 > SW expert Academy' 카테고리의 다른 글
[SW expert Academy] SWEA 1225번 암호생성기 자바(Java) (0) | 2021.02.04 |
---|---|
[SW expert Academy] SWEA 5432번 쇠막대기 자르기 자바(Java) (0) | 2021.02.04 |
[SW expert Academy] SWEA 1218번 괄호 짝짓기 자바(Java) (0) | 2021.02.04 |
[SW expert Academy] SWEA 5431번 민석이의 과제 체크하기 자바(Java) (0) | 2021.02.03 |
[SW expert Academy] SWEA 1873번 상호의 배틀필드 자바(Java) (0) | 2021.02.03 |
[SW expert Academy] SWEA 1954번 달팽이 숫자 자바(Java) (0) | 2021.02.03 |
[SW expert Academy] SWEA 1284번 수도 요금 경쟁 자바(Java) (0) | 2021.02.02 |
[SW expert Academy] SWEA 1986번 지그재그 숫자 자바(Java) (0) | 2021.02.02 |
최근댓글