프로그래밍 공부
SWEA 1974 스도쿠 검증 본문
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int arr[10][10];
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
bool ans = true;
for (int j = 0; j < 9; j++) {
for (int k = 0; k < 9; k++) {
cin >> arr[j][k];
}
}
for (int j = 0; j < 9; j++) {
if (!ans) break;
int col_check[10];
fill(col_check, col_check + 10, 0);
for (int k = 0; k < 9; k++) {
col_check[arr[j][k]]++;
if (col_check[k] > 1) {
ans = false;
break;
}
}
for (int k = 0; k < 9; k++) {
if (col_check[k] > 1) {
ans = false;
break;
}
}
}
for (int j = 0; j < 9; j++) {
if (!ans) break;
int row_check[10];
fill(row_check, row_check + 10, 0);
for (int k = 0; k < 9; k++) {
row_check[arr[k][j]]++;
if (row_check[k] > 1) {
ans = false;
break;
}
}
for (int k = 0; k < 9; k++) {
if (row_check[k] > 1) {
ans = false;
break;
}
}
}
for (int j = 0; j < 9; j++) {
if (!ans) break;
for (int k = 0; k < 9; k++) {
if (j % 3 == 0 && k % 3 == 0) {
int mx_check[10];
fill(mx_check, mx_check + 10, 0);
for (int z = 0; z < 3; z++) {
for (int x = 0; x < 3; x++) {
mx_check[arr[j + z][k + x]]++;
}
}
for (int z = 0; z < 9; z++) {
if (mx_check[z] > 1) {
ans = false;
break;
}
}
}
}
}
cout << "#" << i + 1 << " " << ans << '\n';
}
return 0;
}
더 간단하게 하는 방법이 있을꺼 같았는데 찾지는 못했다
'Problem Solving > SW Expert Academy' 카테고리의 다른 글
SWEA 1204 최빈수 (0) | 2023.11.19 |
---|---|
SWEA 1209 Sum (1) | 2023.11.19 |
1208 Flatten (2) | 2023.11.19 |
1205 View (1) | 2023.11.18 |
1240 단순 2진 암호코드 (0) | 2023.11.18 |
Comments