문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 풀이
- 가로, 세로, 정사각형별로 탐색을 진행하여 겹치는 숫자가 없는지 확인한다. 두 가지 방법이 있다.
- 1. 1부터 9까지 더한 값이 45이므로 모든 값을 더한 결과가 45가 아닌 경우 flag값을 false로 변경
- 2. 0부터 8번지까지 있는 배열을 생성하여 스도쿠에 저장 되어있던 값들을 번지수에 저장 (저장되어있는 값이 0 ~ 8이 아닌 1 ~ 9이므로 -1번째에 저장 해야한다.) -> 이 방법 사용
- flag의 값이 false이면 1부터 9까지 모든 숫자가 들어있지 않은 경우이므로 0을 출력하고, true면 1을 출력한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int tc = Integer.parseInt(br.readLine());
for (int t = 1; t <= tc; t++) {
int[][] board = new int[9][9];
int[] check;
boolean flag = true;
//보드 입력받기
for (int i = 0; i < 9; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < 9; j++) {
board[i][j] = Integer.parseInt(st.nextToken());
}
}
// 가로 탐색
for (int i = 0; i < 9; i++) {
check = new int[9];
// check배열로 모든 문자가 고르게 들어있는지 확인
for (int j = 0; j < 9; j++) {
check[board[i][j] - 1] = 1;
}
// 한 곳이라도 0이 있다면 false
for (int k = 0; k < 9; k++) {
if (check[k] == 0) {
flag = false;
break;
}
}
}
// 세로 탐색
for (int i = 0; i < 9; i++) {
check = new int[9];
for (int j = 0; j < 9; j++) {
check[board[j][i] - 1] = 1;
}
for (int k = 0; k < 9; k++) {
if (check[k] == 0) {
flag = false;
break;
}
}
}
// 정사각형 탐색
for (int i = 0; i <= 6; i+=3) {
for (int j = 0; j <= 6; j+=3) {
check = new int[9];
for (int y = 0; y < i+3; y++) {
for (int x = 0; x < j+3; x++) {
check[board[y][x] - 1] = 1;
}
}
for (int k = 0; k < 9; k++) {
if (check[k] == 0) {
flag = false;
break;
}
}
}
}
if (!flag)
System.out.println("#"+t+" "+0);
else
System.out.println("#"+t+" "+1);
}
}
}'Algorithm > Broute Force' 카테고리의 다른 글
| [Python] 백준 28215번 대피소 (0) | 2024.07.15 |
|---|---|
| [Java] SWEA 1959번 두 개의 숫자열 (0) | 2023.06.29 |
| [Python] 백준 19532번 수학은 비대면강의입니다 (0) | 2023.03.27 |
| [Python] 1436번 영화감독 숌 (0) | 2023.02.20 |
| [Python] 백준 7568번 덩치 (1) | 2023.02.20 |