Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Queue
- 프로그래머스 문자열 정렬
- 이진수 변환
- 스프링부트 도커로 배포
- 프로그래머스 풀이
- 삼각형의 완성조건
- 오름차순 정렬
- 버퍼
- 백준
- java
- 프로그래머스
- 클라이언트
- 문자열
- 알고리즘
- lv2
- 백준 N과 M 자바
- COS Pro
- index of
- 큐
- 스택
- 스프링부트 도커
- Stack
- Programmers
- StringTokenizer
- Lv1
- 자바
- SWEA
- 스프링부트 도커 배포
- 프로그래머스 자바
- lv0
Archives
- Today
- Total
mun dev
[SWEA] D2 스도쿠 검증 자바(Java) 본문
문제 링크
풀이
처음에 복잡하게 풀이했다가 간단한 풀이로 접근할 수 있었다.
1. 행, 열, 3x3의 칸을 확인한다.
2. 행 검사시 해당 행의 값들을 인덱스로 넣고 카운트를 증가한다.
3. 1부터 9까지 검사해서 0이 존재한다면 false후 break한다.
행과 마찬가지로 열과 3x3도 이와 같이 해준다면 어렵지 않게 풀이할 수 있다.
풀이 코드
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringTokenizer st;
for (int testCase = 1; testCase <= T; testCase++) {
int[][] sudoku = new int[10][10];
boolean check = true;
for (int i = 0; i < 9; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < 9; j++) {
sudoku[i][j] = Integer.parseInt(st.nextToken());
}
}
for (int i = 0; i < 9; i++) { // 행 검사
int[] arr = new int[10];
for (int j = 0; j < 9; j++)
arr[sudoku[i][j]]++;
for (int k = 1; k <= 9; k++) {
if (arr[k] == 0) {
check = false;
break;
}
}
}
for (int i = 0; i < 9; i++) { // 열 검사
int[] arr = new int[10];
for (int j = 0; j < 9; j++)
arr[sudoku[j][i]]++;
for (int k = 1; k <= 9; k++) {
if (arr[k] == 0) {
check = false;
break;
}
}
}
for (int i = 0; i <= 6; i += 3) { // 3x3칸 검사
for (int j = 0; j <= 6; j += 3) {
int[] arr = new int[10];
int a = i + 3;
int b = j + 3;
for (int x = i; x < a; x++) {
for (int y = j; y < b; y++) {
arr[sudoku[x][y]]++;
}
}
for (int z = 1; z <= 9; z++) {
if (arr[z] == 0) {
check = false;
break;
}
}
}
}
int result = check ? 1 : 0;
System.out.println("#" + testCase + " " + result);
}
}
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] D3 2805 농작물 수확하기 자바(Java) (0) | 2023.11.19 |
---|---|
[SWEA] D2 1954 달팽이 숫자 자바(Java) (0) | 2023.11.16 |
[SWEA] D2 2001 파리퇴치 자바(Java) (0) | 2023.11.16 |
[SWEA] D3 5215 햄버거 다이어트 자바(Java) (0) | 2023.11.15 |
[SWEA] D2 1204 최빈수 구하기 자바(Java) (0) | 2023.11.15 |