문제
0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3*3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 -> 1, 1 -> 0)
입력
첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다.
출력
첫째 줄에 문제의 정답을 출력한다. 만약 A를 B로 바꿀 수 없다면 -1을 출력한다.
코드
C++ 17
C# 6.0
Python 3
복기
특별히 느리지 않는 한은 파이썬 기본 내장 함수인 input()과 print()를 쓰는 것이 낫다. sys.stdin.readline()을 사용하니 개행 문자가 들어오거나 들어오지 않는 혼용된 상태의 입력 케이스의 경우 처리하기 난감한 문제가 있다.
C++ 17
C# 6.0
Python 3
'Outdated > Algorithm Solution' 카테고리의 다른 글
[BOJ] 1149번 RGB거리 (0) | 2020.02.07 |
---|---|
[BOJ] 1463번 1로 만들기 (0) | 2020.02.05 |
[BOJ] 9663번 N-Queen (0) | 2020.01.22 |
[BOJ] 2230번 수 고르기 (0) | 2020.01.17 |
[BOJ] 1022번 소용돌이 예쁘게 출력하기 (0) | 2020.01.16 |