#include <stdio.h> int num[100][100]={0}; int line1[100]={0}; int line2[100]={0}; int line1_cal(int n); //행의 합 계산 int line2_cal(int n); //열의 합 계산 int main(void) { int n, i, j, a1, a2; scanf(" %d", &n); for(i=0; i<n; i++) { for(j=0; j<n; j++) scanf(" %d", &num[i][j]); } //-1=오류 없음 -2=오류가 많음 그외=오류가 행과 열에 각각 하나씩 존재 a1=line1_cal(n); a2=line2_cal(n); if(a1==-1 && a2==-1) printf("OK"); else if(a1>=0 && a2>=0) printf("Change bit (%d,%d)", a1+1, a2+1); else printf("Corrupt"); return 0; } int line1_cal(int n) { int i, j, a, c=0; for(i=0; i<n; i++) { for(j=0; j<n; j++) { if(num[i][j]==1) line1[i]+=num[i][j]; } //printf("1: %d - %d\n", i, line1[i]); if(line1[i]%2!=0) { c++; a=i; } } if(c==0) return -1; else if(c==1) return a; else return -2; } int line2_cal(int n) { int i, j, a, c=0; for(i=0; i<n; i++) { for(j=0; j<n; j++) { line2[i]+=num[j][i]; } //printf("2: %d - %d\n", i, line2[i]); if(line2[i]%2!=0) { c++; a=i; } } if(c==0) return -1; else if(c==1) return a; else return -2; }
2018.06.09 09:17
정올 - 실전대비 - 오류교정(1037)
조회 수 187 추천 수 0 댓글 0