์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[ ๋ฐฑ์ค€ / BOJ 1080 ] ํ–‰๋ ฌ ( JAVA / ์ž๋ฐ” )

KIMHYEYUN 2021. 10. 11. 18:03
๋ฐ˜์‘ํ˜•

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);

    }
}

 

728x90
๋ฐ˜์‘ํ˜•