[ ๋ฐฑ์ค / BOJ 1080 ] ํ๋ ฌ ( JAVA / ์๋ฐ )
https://www.acmicpc.net/problem/1080
1080๋ฒ: ํ๋ ฌ
์ฒซ์งธ ์ค์ ํ๋ ฌ์ ํฌ๊ธฐ N M์ด ์ฃผ์ด์ง๋ค. N๊ณผ M์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ๋ ฌ A๊ฐ ์ฃผ์ด์ง๊ณ , ๊ทธ ๋ค์์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ๋ ฌ B๊ฐ ์ฃผ์ด์ง๋ค.
www.acmicpc.net
๋ฌธ์
0๊ณผ 1๋ก๋ง ์ด๋ฃจ์ด์ง ํ๋ ฌ A์ ํ๋ ฌ B๊ฐ ์๋ค. ์ด๋, ํ๋ ฌ A๋ฅผ ํ๋ ฌ B๋ก ๋ฐ๊พธ๋๋ฐ ํ์ํ ์ฐ์ฐ์ ํ์์ ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
ํ๋ ฌ์ ๋ณํํ๋ ์ฐ์ฐ์ ์ด๋ค 3×3ํฌ๊ธฐ์ ๋ถ๋ถ ํ๋ ฌ์ ์๋ ๋ชจ๋ ์์๋ฅผ ๋ค์ง๋ ๊ฒ์ด๋ค. (0 → 1, 1 → 0)
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ๋ ฌ์ ํฌ๊ธฐ N M์ด ์ฃผ์ด์ง๋ค. N๊ณผ M์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ๋ ฌ A๊ฐ ์ฃผ์ด์ง๊ณ , ๊ทธ ๋ค์์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ๋ ฌ B๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์ ์ ์ ๋ต์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ A๋ฅผ B๋ก ๋ฐ๊ฟ ์ ์๋ค๋ฉด -1์ ์ถ๋ ฅํ๋ค.
ํ์ด
[0][0] ~ [N-2][M-2] ๊น์ง ๋ ๊ฐ์ ํ๋ ฌ์ ๋น๊ตํ๋ฉด์ ๋ค๋ฅธ ๊ฐ์ด๋ฉด,
๐ 3x3 ํฌ๊ธฐ๋ก 1->0, 0->1 ๋ก ๋ฐ๊ฟ์ค๋ค.
๋ชจ๋ ์งํ ํ ํ, A, B๊ฐ ๋ค๋ฅธ ๊ฐ์ด ํ๋๋ผ๋ ์๋ค๋ฉด -1 ์ถ๋ ฅ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_BOJ_1080_ํ๋ ฌ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
int M = Integer.parseInt(stringTokenizer.nextToken());
int answer = 0;
char[][] matrixA = new char[N][M];
char[][] matrixB = new char[N][M];
for(int i = 0 ; i < N ; i++){
String str = br.readLine();
matrixA[i] = str.toCharArray();
}
for(int i = 0 ; i < N ; i++){
String str = br.readLine();
matrixB[i] = str.toCharArray();
}
for(int i = 0 ; i < N-2 ; i++){
for(int j = 0 ; j < M-2 ; j++){
if(matrixA[i][j] == matrixB[i][j])
continue;
answer++;
for(int x = i; x < i+3; x++){
for(int y = j; y < j+3 ; y++){
matrixA[x][y] = matrixA[x][y] == '1' ? '0' : '1';
}
}
}
}
for(int i = 0 ; i < N ; i++){
for(int j = 0 ; j < M ; j++){
if(matrixA[i][j] != matrixB[i][j]){
System.out.println(-1);
return;
}
}
}
System.out.println(answer);
}
}