https://www.acmicpc.net/problem/1080
내가좋아하는 행렬 문제 근데, 왜 Greedy알고리즘인지 모르고 풀었다.
검사해서 3개씩 바꿀건데 바꾸기전과 바꾼후가 다르면 결국 변환시킬수 없는 것이다.
따라서, 우선 변환시키고 다르면, 변환했을때를 비교해서 검사했다.
#include<iostream>
using namespace std;
int arr[51][51];
int answer[51][51];
int N, M;
int cnt;
void change(int y, int x) {
cnt++;
for (int i = y; i < y + 3; i++) {
for (int j = x; j < x + 3; j++) {
if (arr[i][j] == 1)
arr[i][j] = 0;
else
arr[i][j] = 1;
}
}
}
int main() {
cin >> N >> M;
string a;
for (int i = 0; i < N; i++) {
cin >> a;
for (int j = 0; j < a.size(); j++) {
arr[i][j] = a[j]-'0';
}
}
for (int i = 0; i < N; i++) {
cin >> a;
for (int j = 0; j < a.size(); j++) {
answer[i][j] = a[j]-'0';
}
}
for (int i = 0; i < N-2; i++) {
for (int j = 0; j < M-2; j++) {
if (arr[i][j] != answer[i][j]) {
change(i, j);
}
//if (arr[i][j] != answer[i][j]) {
// cout << -1 << endl;
//}
}
}
for (int i = 0; i < N ; i++) {
for (int j = 0; j < M ; j++) {
if (arr[i][j] != answer[i][j]) {
cout << -1 << endl;
return 0;
}
//if (arr[i][j] != answer[i][j]) {
// cout << -1 << endl;
//}
}
}
cout << cnt << endl;
return 0;
}
'코딩테스트_백준풀이' 카테고리의 다른 글
강의실 배정 #11000 (1) | 2023.11.23 |
---|---|
로프 #2217 c++ 풀이 (0) | 2023.11.22 |
신입사원 #1946 c++ 풀이 (2) | 2023.11.22 |
잃어버린 괄호 #1541 c++ 문제풀이 (0) | 2023.11.22 |
주짓수 #15724 c++ 풀이 (1) | 2023.11.20 |