🔗 문제 내용
https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
🌱 문제 풀이 방법
입력-> 8칸씩 자르면 이동하면서 자른 부분과 정확한 부분이 얼마만큼 틀린지 확인
반대케이스의 경우 64-위의 경우로 구할 수 있음
🤔 공부가 필요한 부분
배열 이해가 부족해 못풀고 있음
로직을 간결하게 할수 있을것 같음
class로 분리 해서 풀어야함
💻 코드
package test;
import java.util.Arrays;
import java.util.Scanner;
public class ps_1152 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
char [][]chess = new char[m][n];
int []count = new int[(m-7)*(n-7)];
char [][]chessCase = {{'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'}};
int z = 0;
int a = 0;
int b=0;
for(int i=0; i<m;i++) {
String color=sc.next();
for(int r=0; r<n;r++) {
chess[i][r]=color.charAt(r);
}
}
for(int i=0; i<m-7;i++) {
for(int r=0;r<n-7;r++) {
for(int p=i;p<i+8;p++) {
for(int q=r;q<r+8;q++) {
if(chessCase[a][b]!=chess[p][q]) {
count[z]+=1;
}
b+=1;
}
a+=1;
b=0;
}
}
a=0;
b=0;
z+=1;
}
int min=count[0];
for(int i=0; i<count.length;i++) {
if(min>=count[i]) {
min=count[i];
}
}
System.out.println(min);
}
}
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Java] 백준 2751 : 수 정렬하기 2 (0) | 2021.12.13 |
---|---|
[Java] 백준 1259 : 팰린드롬수 (0) | 2021.11.28 |
[Java] 백준 2675 : 문자열 반복 (0) | 2021.11.25 |
[Java] 백준 1157 : 단어 공부 (0) | 2021.11.25 |
[Java] 백준 1152 : 단어의 개수 (0) | 2021.11.25 |
댓글