Greedy(12)_행렬(1080)

BJO 1080 행렬

알게된 것

  1. c언어에서 사용했던 ! 함수는 python에서는 not으로 사용할 수 있다 not True 하면 False가 나오고 not 0 하면 True가 출력된다.

문제이해

코드

import sys

N, M = map(int, sys.stdin.readline().split())

Before = []
After = []


def flip(a, b):
    if a+3 > N or b+3 > M:
        return False

    for i in range(a, a+3):
        for j in range(b, b+3):
            if(Before[i][j] == 1 or Before[i][j] == '1'):
                Before[i][j] = 0
            else:
                Before[i][j] = 1
    return True


if __name__ == "__main__":
  # 1. 입력 받기
    for i in range(N):
        temp_s = list(sys.stdin.readline().rstrip())
        temp_s = [int(i) for i in temp_s]
        Before.append(temp_s)

    for i in range(N):
        temp_s = list(sys.stdin.readline().rstrip())
        temp_s = [int(i) for i in temp_s]
        After.append(temp_s)

    cnt = 0
    for i in range(N):
        for j in range(M):
            if (Before[i][j] != After[i][j]):
                if(flip(i, j)):
                    cnt += 1
                else:
                    print(-1)
                    sys.exit()
    print("%d" % cnt)


참고자료 [참고한 블로그]https://www.crocus.co.kr/1086

[리스트 문자열을 int 형태로 변환]https://shayete.tistory.com/entry/%EB%A6%AC%EC%8A%A4%ED%8A%B8%EC%9D%98-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-int-%ED%98%95%ED%83%9C%EB%A1%9C-%EB%B3%80%ED%99%98

0%