최's 먹공로그
백준1018_체스판 다시 칠하기 본문
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 |
package backjoon;
import java.util.Scanner;
public class b1018 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 행
int M = sc.nextInt(); // 열
char[][] arr = new char[N][M];
String[] array = new String[N];
// String으로 입력해서 한글자씩 char형태로
for(int i = 0; i < N; i++) {
array[i] = sc.next();
}
for(int i = 0; i < N; i++) {
for(int j = 0; j < M; j++) {
arr[i][j] = array[i].charAt(j);
}
}
int cnt_b = 0, cnt_w = 0; // 뒤짚어야 될 돌 카운트
int min_b = 999, min_w = 999, min_result = 0; // 다 뒤짚고 최소값 저장
// (0,0)에 있는 돌이 블랙일때의 최소값
for(int i = 0; i <= N - 8; i++) { // 8*8로 자름
for(int j = 0; j <= M - 8; j++) { // 8*8로 자름
cnt_b = 0;
for(int x = i; x < i + 8; x++) {
for(int y = j; y < j + 8; y++) {
if((x%2==0 && y%2==0) || (x%2!=0 && y%2!=0)) { // (0,0)이 블랙일때 인덱스x,y가 둘다 짝수이거나 홀수일때는 블랙이어야함 그렇지 않으면 카운트
if(arr[x][y] != 'B')
cnt_b++;
continue;
}
if((x%2==0 && y%2!=0) || (x%2!=0 && y%2==0)) { // (0,0)이 블랙일때 인덱스x,y가 한개는 짝수 한개는 홀수 일때는 화이트이어야함 그렇지 않으면 카운트
if(arr[x][y] != 'W')
cnt_b++;
continue;
}
}
}
if(min_b > cnt_b)
min_b = cnt_b; // (0,0)이 블랙이라는 가정하에 최소값 저장
}
}
// (0,0)에 있는 돌이 화이트 일때의 최소값
for(int i = 0; i <= N - 8; i++) { // 8*8로 자름
for(int j = 0; j <= M - 8; j++) { // 8*8로 자름
cnt_w = 0;
for(int x = i; x < i + 8; x++) {
for(int y = j; y < j + 8; y++) {
if((x%2==0 && y%2==0) || (x%2!=0 && y%2!=0)) { // (0,0)이 화이트일때 인덱스x,y가 둘다 짝수이거나 홀수일때는 화이트이어야함 그렇지 않으면 카운트
if(arr[x][y] != 'W')
cnt_w++;
continue;
}
if((x%2==0 && y%2!=0) || (x%2!=0 && y%2==0)) { // (0,0)이 화이트일때 인덱스x,y가 한개는 짝수 한개는 홀수 일때는 블랙이어야함 그렇지 않으면 카운트
if(arr[x][y] != 'B')
cnt_w++;
continue;
}
}
}
if(min_w > cnt_w) {
min_w = cnt_w; // (0,0)이 화이트라는 가정하에 최소값 저장
}
}
}
min_result = (min_b < min_w) ? min_b:min_w; // (0,0)블랙일때의 최소값과 화이트일때의 최소값을 비교해서 둘 중 더 작은 값을 저장
System.out.println(min_result);
}// end of main
}
|
cs |
'APS' 카테고리의 다른 글
SW expert Academy 5431_민석이의 과제 체크하기 (0) | 2019.02.03 |
---|---|
백준10026_적록색약 (0) | 2019.02.03 |
백준2667_단지번호붙이기 (0) | 2019.02.03 |
백준1182_부분집합의 합 (0) | 2019.02.03 |
알고리즘_경우의수 부분집합 (0) | 2019.01.17 |