Notice
Recent Posts
Recent Comments
«   2024/12   »
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
Archives
Today
Total
관리 메뉴

블로그 언저리인 무언가

[백준/BOJ] 1080 행렬 본문

Programming/BOJ

[백준/BOJ] 1080 행렬

he1fire 2020. 11. 29. 01:17
728x90

문제 : 1080 행렬

 

1080번: 행렬

첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다.

www.acmicpc.net

행렬 A와 행렬 B가 주어질 때 3*3 크기의 모든 원소를 뒤집어서

행렬 A를 행렬 B로 만드는 최소 횟수를 구하는 문제이다.

그리디 하게 앞 원소부터 모두 뒤집어 본 후 불가능한 경우를 체크해주면 된다.


Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll N, M, ans;
string x[55], y[55];
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> N >> M;
    for (int i=0;i<N;i++)
        cin >> x[i];
    for (int i=0;i<N;i++)
        cin >> y[i];
    for (int i=0;i<N-2;i++){
        for (int j=0;j<M-2;j++){
            if (x[i][j]!=y[i][j]){
                ans++;
                for (int a=i;a<i+3;a++){
                    for (int b=j;b<j+3;b++){
                        x[a][b]=='0' ? x[a][b]='1' : x[a][b]='0';
                    }
                }
            }
        }
    }
    for (int i=0;i<N;i++){
        for (int j=0;j<M;j++){
            if (x[i][j]!=y[i][j]){
                cout << "-1";
                return 0;
            }
        }
    }
    cout << ans;
    return 0;
}
728x90

'Programming > BOJ' 카테고리의 다른 글

[백준/BOJ] 1916 최소비용 구하기  (0) 2020.12.04
[백준/BOJ] 9375 패션왕 신혜빈  (0) 2020.12.01
[백준/BOJ] 1074 Z  (0) 2020.11.29
[백준/BOJ] 1138 한 줄로 서기  (0) 2020.11.23
[백준/BOJ] 18115 카드 놓기  (1) 2020.11.20
Comments