행렬
사용언어 : python
Greedy Alogorithm
✍ 문제
💻 코드
N,M = map(int,input().split())
list_a=[list(map(int,input().rstrip())) for _ in range(N)] #2차원 배열 선언
list_b=[list(map(int,input().rstrip())) for _ in range(N)] #2차원 배열 선언
def makeit(i,j): #변환해주는 함수
for k in range(i,i+3):
for m in range(j,j+3):
if list_a[k][m]==0:
list_a[k][m]=1
else :
list_a[k][m]=0
return list_a
def checkit():
if list_a==list_b:
return True
return False
n=0
breaker=False
for i in range(N-2):
for j in range(M-2):
if list_a[i][j] != list_b[i][j]:
makeit(i,j)
n+=1
if checkit()==True:
breaker=True
break
if breaker==True :
break
if checkit()==False:
n=-1
print(n)
def
를 이용해 행렬을 변환해주는 함수 makeit()
과 같은지 확인해주는 함수인 checkit()
두 함수를 각각 만들어 코드의 간결성을 도움
어려움을 겪었던 부분
if list_a[i][j] != list_b[i][j]:
초기 알고리즘 설계시 조건문 (둘의 값이 다르다는 것은 변형 해줘야한다는 의미)을 만족할때만 변경해주면 된다는 사실을 깨닫지 못하고 if문 없이 코드를 다짜놓았었다.