반응형
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
풀이 >
최종결과값으로 나와야하는 배열을 지정하고
입력된 판을 검사한다.
(0, 0)이 흰색또는 검은색으로 시작하는 두가지 경우를 모두 검사해줘야함!
입력된 크기가 8x8이상일 경우 기준점(시작점)을 이동시켜 검사하기
import java.io.*;
public class Baekjoon1018 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] size = br.readLine().split(" ");
int x = Integer.parseInt(size[1]);
int y = Integer.parseInt(size[0]);
String[][] squareB = {
{"B", "W", "B", "W", "B", "W", "B", "W"},
{"W", "B", "W", "B", "W", "B", "W", "B"},
{"B", "W", "B", "W", "B", "W", "B", "W"},
{"W", "B", "W", "B", "W", "B", "W", "B"},
{"B", "W", "B", "W", "B", "W", "B", "W"},
{"W", "B", "W", "B", "W", "B", "W", "B"},
{"B", "W", "B", "W", "B", "W", "B", "W"},
{"W", "B", "W", "B", "W", "B", "W", "B"}};
String[][] squareW = {
{"W", "B", "W", "B", "W", "B", "W", "B"},
{"B", "W", "B", "W", "B", "W", "B", "W"},
{"W", "B", "W", "B", "W", "B", "W", "B"},
{"B", "W", "B", "W", "B", "W", "B", "W"},
{"W", "B", "W", "B", "W", "B", "W", "B"},
{"B", "W", "B", "W", "B", "W", "B", "W"},
{"W", "B", "W", "B", "W", "B", "W", "B"},
{"B", "W", "B", "W", "B", "W", "B", "W"}};
//입력값 넣어주기
String[][] input = new String[y][x];
for (int i = 0; i < y; i++) {
String[] str = br.readLine().split("");
for (int j = 0; j < x; j++) {
input[i][j] = str[j];
}
}
int min = 64;
// 입력값이 8x8 초과일 경우
// 8x8 크기로 자를수있는 기준 인덱스(시작점)로 이동해서 8x8 크기만큼 검사
for (int z = 0; z <= ((y > 8) ? y - 8 : 0); z++) {
for (int k = 0; k <= ((x > 8) ? x - 8 : 0); k++) {
int countW = 0;
int countB = 0;
for (int i = z; i < 8 + z; i++) {
for (int j = k; j < 8 + k; j++) {
//다시 칠해야하는 갯수
//흰색으로 시작하는 경우
if (!input[i][j].equals(squareW[i - z][j - k])) countW++;
//검정으로 시작하는경우
if (!input[i][j].equals(squareB[i - z][j - k])) countB++;
}
}
// 더 작은수를 최솟값으로 저장
min = Math.min(countW, min);
min = Math.min(countB, min);
}
}
System.out.println(min);
br.close();
}
}
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[JAVA]백준 - 11866.요세푸스 문제 0 (0) | 2020.11.23 |
---|---|
[JAVA]백준 - 1920.수 찾기 (0) | 2020.11.13 |
[JAVA]백준 - 1181.단어 정렬(compare 오버라이딩) (0) | 2020.11.10 |
[JAVA]백준 - 11650.좌표 정렬하기(Arrays.sort / compare 오버라이딩) (0) | 2020.11.09 |
[JAVA]백준 - 1259.팰린드롬수 (0) | 2020.11.08 |