SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com

설계
- 가로, 세로, 3x3일 경우를 각각 검사해준다.
- 이상이 발견되었을 경우 0을 출력하고 다음 테스트 케이스로 넘어간다.
포인트
- 이상이 발견되었을 때 이중 for문을 빠져나와 test_case for문을 continue해줘야 한다.
- 평소에는 주로 flag를 설정하여 이중 for문을 빠져나왔는데, 라벨을사용해 빠져나오는 방법을 이번 기회에 알게 되어 아래 포스팅에 정리해두었으니 참고 바란다.
https://yujinius45.tistory.com/67
[Java] 자바에서 이중 for문을 빠져나오는 방법 3가지
자바 프로그래밍을 하다 보면 이중 for문을 사용하게 되는 경우가 많습니다. 하지만 특정 조건에서 이중 for문을 빠져나와야 할 때 어떻게 해야 할까요? 오늘은 자바에서 이중 for문을 빠져나오는
yujinius45.tistory.com
코드
////////////////////////////////////////////////////////////////
import java.util.Scanner;
import java.io.FileInputStream;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
int T;
T = sc.nextInt();
boolean flag = false;
for (int test_case = 1; test_case <= T; test_case++) {
// 9X9 퍼즐
int[][] puzzle = new int[9][9];
for (int i = 0; i < puzzle.length; i++) {
for (int j = 0; j < puzzle[i].length; j++) {
puzzle[i][j] = sc.nextInt();
}
}
//////////
// 가로 검사
Loop1 :
for (int i = 0; i < puzzle.length; i++) {
//System.out.println("가로 검사");
int[] visited = new int[10];
Loop2 :
for (int j = 0; j < puzzle[i].length; j++) {
if (visited[puzzle[i][j]] == 0) {
visited[puzzle[i][j]] = 1;
} else {
// 방문했던 것
System.out.printf("#%d %d\n", test_case, 0);
// System.exit(0);
flag = true;
break Loop1;
}
}
}
if (flag) {
flag = false;
continue;
}
// 세로 검사
Loop3 :
for (int i = 0; i < puzzle.length; i++) {
//System.out.println("세로 검사");
int[] visited = new int[10];
Loop4 :
for (int j = 0; j < puzzle[i].length; j++) {
if (visited[puzzle[j][i]] == 0) {
visited[puzzle[j][i]] = 1;
} else {
// 방문했던 것
System.out.printf("#%d %d\n", test_case, 0);
// System.exit(0);
flag = true;
break Loop3;
}
}
}
if (flag) {
flag = false;
continue;
}
// 3x3 검사
Loop5:
for (int i = 0; i < puzzle.length; i += 3) {
//System.out.println("3x3 검사");
for (int j = 0; j < puzzle[i].length; j += 3) {
// 3x3
//System.out.println(i+""+j);
int[] visited = new int[10];
for (int n = 0; n < 3; n++) {
for (int k = 0; k < 3; k++) {
if (visited[puzzle[i + n][j + k]] == 0) {
visited[puzzle[i + n][j + k]] = 1;
} else {
// 방문했던 것
System.out.printf("#%d %d\n", test_case, 0);
// System.exit(0);
flag = true;
break Loop5;
}
}
}
}
}
if (flag) {
flag = false;
continue;
}
System.out.printf("#%d %d\n", test_case,1);
}
}
}
'코딩테스트 > SWEA' 카테고리의 다른 글
| [SWEA] 1926. 간단한 369게임 D2 - Java 자바 (0) | 2024.05.17 |
|---|---|
| [SWEA] 1954. 달팽이 숫자 D2 - Java 자바 (0) | 2024.05.08 |