[swea-D3] 11315. 오목 판정
SWEA 오목 판정 문제를 JAVA를 이용해 완전탐색으로 범위 조건문을 통해 해결하는 방법으로 설명합니다.
🙋♂️ 들어가며
조건은 5 <= N <= 20
그리고 5개만 연속으로 'o' 이면 된다.
결과적으로 문제는 범위 조건을 잘 지정해주면 된다.
✅ 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc < T+1; tc++) {
int N = Integer.parseInt(br.readLine());
// 1. 배열 생성
char[][] arr = new char[N][N];
for (int r = 0; r < N; r++) {
String cols = br.readLine();
for (int c = 0; c < N; c++) {
arr[r][c] = cols.charAt(c);
}
}
// 2. 검사
boolean found = false;
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
if (arr[r][c] == 'o') {
// 2-1. 왼 -> 오
if (c+1 < N && c+2 < N && c+3 < N && c+4 < N) {
if (arr[r][c+1] == 'o' && c+1 < N &&
arr[r][c+2] == 'o' && c+2 < N &&
arr[r][c+3] == 'o' && c+3 < N &&
arr[r][c+4] == 'o' && c+4 < N
) {
found = true;
}
}
// 2-2. 위 -> 아래
if (r+1 < N && r+2 < N && r+3 < N && r+4 < N) {
if (arr[r+1][c] == 'o' && r+1 < N &&
arr[r+2][c] == 'o' && r+2 < N &&
arr[r+3][c] == 'o' && r+3 < N &&
arr[r+4][c] == 'o' && r+4 < N
) {
found = true;
}
}
// 2-3. 왼위 -> 오아래
if (r+1 < N && c+1 < N && r+2 < N && c+2 < N && r+3 < N && c+3 < N && r+4 < N && c+4 < N) {
if (arr[r+1][c+1] == 'o' && r+1 < N && c+1 < N &&
arr[r+2][c+2] == 'o' && r+2 < N && c+2 < N &&
arr[r+3][c+3] == 'o' && r+3 < N && c+3 < N &&
arr[r+4][c+4] == 'o' && r+4 < N && c+4 < N
) {
found = true;
}
}
// 2-4. 왼아 -> 오 위
if (r-1 >= 0 && c+1 < N && r-2 >= 0 && c+2 < N && r-3 >= 0 && c+3 < N && r-4 >= 0 && c+4 < N) {
if (arr[r-1][c+1] == 'o' && r-1 >= 0 && c+1 < N &&
arr[r-2][c+2] == 'o' && r-2 >= 0 && c+2 < N &&
arr[r-3][c+3] == 'o' && r-3 >= 0 && c+3 < N &&
arr[r-4][c+4] == 'o' && r-4 >= 0 && c+4 < N
) {
found = true;
}
}
}
}
// 3. 다 찾았으면 종료
if (found) break;
}
// 4. 출력
if (found) {
System.out.println("#" + tc + " " + "YES");
}
else System.out.println("#" + tc + " " + "NO");
}
}
}
This post is licensed under CC BY 4.0 by the author.
