Post

[swea-D3] 11315. 오목 판정

SWEA 오목 판정 문제를 JAVA를 이용해 완전탐색으로 범위 조건문을 통해 해결하는 방법으로 설명합니다.

# [swea-D3] 11315. 오목 판정

🙋‍♂️ 들어가며

조건은 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.

Trending Tags