반응형
문제: https://www.acmicpc.net/submit/1080
로그인
www.acmicpc.net
풀이:
왼쪽 맨 위의 좌표를 기준으로 3x3 크기로 0 -> 1, 1 -> 0 뒤집어주면 된다.
주의할 점은 좌표를 뒤집는 범위를 n-2, m-2 로 제한해야 한다는 것과,
n과 m이 3보다 작을 경우를 고려해주어야 한다는 것이다.
for i in range(n-2): for j in range(m-2): if A[i][j] != B[i][j]: reverse(i, j) result += 1 if A == B: print(result) exit()
다음과 같이 코드를 작성하면 n과 m이 3보다 작을 경우를 고려하지 않고 리스트A와 리스트B가 같은지
검사하기 때문에 제출할 경우 틀렸다는 대답을 받게된다.
정답:
import sys input = sys.stdin.readline n, m = map(int, input().split()) A = [list(map(int, list(input().rstrip()))) for _ in range(n)] B = [list(map(int, list(input().rstrip()))) for _ in range(n)] result = 0 def reverse(i, j): for x in range(i, i+3): for y in range(j, j+3): A[x][y] = 1 - A[x][y] for i in range(n-2): for j in range(m-2): if A[i][j] != B[i][j]: reverse(i, j) result += 1 if A == B: print(result) else: print(-1)
반응형
'Python 코딩테스트' 카테고리의 다른 글
수학: 백준 4375 1 파이썬(python) (0) | 2022.01.13 |
---|---|
수학: 백준 1037 약수 (0) | 2022.01.10 |
BFS(너비 우선 탐색): 백준 1697 숨바꼭질 (0) | 2021.10.06 |
DFS(깊이 우선 탐색): 백준 13023 파이썬 (0) | 2021.10.05 |
DP(다이나믹 프로그래밍): 백준 1912 파이썬 연속합 (0) | 2021.09.30 |