백준에서 문제 보기 : https://www.acmicpc.net/problem/1080
난이도
실버 2
알고리즘
1) N M 행렬 두개 입력 받기
2) 두개의 행렬의 원소가 같지 않을때 3X3 의 값을 바꿔줌 (이를 0부터 N-2 , M-2 번 돌림 3X3행렬생각하면 나옴) , cnt로 도는거 세줌
3) 두 행렬 원소 하나씩 비교해가면서 같으면 cnt 출력 틀리면 -1 출력
해결 방안
문제에서 요구하는 사항은 '그리디'를 구현하여 해결하는 개념을 요구합니다.
N,M = map(int, input().split())
matrix = [list(map(int, input())) for _ in range(N)]
result = [list(map(int, input())) for _ in range(N)]
cnt = 0
def solve(x, y, matrix):
for i in range(x, x+3):
for j in range(y, y+3):
matrix[i][j] = 1 - matrix[i][j]
for i in range(0, N-2):
for j in range(0, M-2):
if matrix[i][j] != result[i][j]:
cnt += 1
solve(i,j,matrix)
ck = True
for i in range(N):
for j in range(M):
if matrix[i][j] != result[i][j]:
ck = False
if ck:
print(cnt)
else:
print(-1)
출력
'코딩테스트' 카테고리의 다른 글
백준(Baekjoon) 1463번 : 1로 만들기 with Python (0) | 2021.01.22 |
---|---|
백준(Baekjoon) 1874번 : 스택 수열 with Python (0) | 2021.01.22 |
백준(Baekjoon) 11399번 : ATM with Python (0) | 2021.01.21 |
[Baekjoon] 백준 11047번 : 동전 0 with Python (0) | 2021.01.21 |
[Baekjoon] 백준 9012번 : 괄호 with Python (0) | 2021.01.21 |
댓글