문제를 풀 때 1~9까지의 합을 더하면 45인 성질을 이용해서
검사하는 영역의 합이 45가 아니면 정지시키고 바로 종료하도록 했다.
하지만 검사하는 영역이 1~9가 아니면서 합이 45일 경우에는 해결이 안 된다.
위 문제의 sample input에는 위에 해당하는 케이스가 없어서 그런지
합을 이용한 방식으로도 해결되었다.
다음에 보완하여 해결해볼 필요성이 있다.
package level_2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class SW_1974 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int[][] arr = new int[9][9];
int T = Integer.parseInt(br.readLine());
for (int test_case = 1; test_case <= T; test_case++) {
for (int a = 0; a < 9; a++) {
st = new StringTokenizer(br.readLine());
for (int b = 0; b < 9; b++) {
arr[a][b] = Integer.parseInt(st.nextToken());
}
}
int result = 1;
int sum = 0;
L: for (int a = 0; a < 9; a++) {// 가로체크
for (int b = 0; b < 9; b++) {
sum += arr[a][b];
}
if (sum != 45) {
result = 0;
break L;
}
sum = 0;
}
sum = 0;
L: for (int b = 0; b < 9; b++) {// 세로체크
for (int a = 0; a < 9; a++) {
sum += arr[a][b];
}
if (sum != 45) {
result = 0;
break L;
}
sum = 0;
}
sum = 0;
L: for (int a = 0; a < 9; a += 3) {
for (int b = 0; b < 9; b += 3) {
for (int aa = a + 0; aa < a + 3; aa++) {
for (int bb = b + 0; bb < b + 3; bb++) {
sum += arr[aa][bb];
}
}
if (sum != 45) {
result = 0;
break L;
}
sum = 0;
}
sum = 0;
}
bw.write("#" + test_case + " " + result + "\n");
}
bw.flush();
bw.close();
}
}
'알고리즘 풀이 > SWEA' 카테고리의 다른 글
[SWEA][JAVA] 1961. 숫자 배열 회전 (0) | 2022.01.16 |
---|---|
[SWEA][JAVA] 1966. 숫자를 정렬하자 (0) | 2022.01.16 |
[SWEA][JAVA] 1976. 시각 덧셈 (0) | 2022.01.16 |
[SWEA][JAVA] 1979. 어디에 단어가 들어갈 수 있을까 (0) | 2022.01.16 |
[SWEA][JAVA] 1983 .조교의 성적 매기기 (0) | 2022.01.15 |