728x90
반응형
실버1인데 어려웠다..
일단 행렬 A,B 를 n*m으로 하면 계속 입력이 잘안되었다.
접근 1.다른부분 처음에 정리 -> 하나씩 바꾸기 -> 끊임없이 바꾸기? -> 안되면 무한루프..
체크한 다른 부분 계속 바뀌는데 계속 n*m 행렬 확인하면 비효율적..
정답
3x3 행렬단위만 바꿀수 있으므로 n-3,m-3까지만 체크하고 (i,j)를 왼쪽 꼭지점으로 생각하면 여길 체크하면 다음부턴
체크 할 필요가 없어짐(바꿀수 없으므로). 하나하나 다바꿔보고 안되면 안되는것!
#include<vector>
#include<iostream>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
vector<string>A(n);
vector<string>B(n);
//n*n 숫자 입력으로 하면 안됨
string tmp;
for(int i=0;i<n;i++){
cin>>A[i];
}
for(int i=0;i<n;i++){
cin>>B[i];
}
int cnt=0;
for(int i=0;i<=n-3;i++){
for(int j=0;j<=m-3;j++){
if(A[i][j]!=B[i][j]){
//바꾸기
for(int k=i;k<i+3;k++){
for(int s=j;s<j+3;s++){
if(A[k][s]=='0')A[k][s]='1';
else A[k][s]='0';
}
}
cnt++;
}
}
}
//1.다른부분 처음에 정리 -> 하나씩 바꾸기 -> 끊임없이 바꾸기? -> 안되면 무한루프..
//계속 바뀌는 문제
//같은지 검사
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(A[i][j]!=B[i][j]){
cout<<-1; return 0;
}
}
}
cout<<cnt;
return 0;
}
728x90
반응형
'하루 1문제 챌린지 > Silver1' 카테고리의 다른 글
백준 2615번 오목(C++)🚩 (0) | 2024.03.19 |
---|---|
백준 2529번 부등호(C++) 🚩 (0) | 2024.03.01 |
백준 2841번 외계인의 기타연주(C++) (1) | 2024.02.16 |
백준 15903번 카드합체놀이 (C++) (1) | 2024.02.16 |
백준 16206번 롤케이크(C++)🚩 (0) | 2024.02.13 |