https://school.programmers.co.kr/learn/courses/30/lessons/92344

1) 코드
def solution(board, skill):
answer = 0
N = len(board)
M = len(board[0])
diff = [[0]*(M+1) for _ in range(N+1)]
for types, r1, c1, r2, c2, degree in skill:
if types == 1:
degree = (-1)*degree
diff[r1][c1] += degree
diff[r1][c2+1] -= degree
diff[r2+1][c1] -= degree
diff[r2+1][c2+1] += degree
for i in range(N):
for j in range(1, M):
diff[i][j] += diff[i][j-1]
for j in range(M):
for i in range(1, N):
diff[i][j] += diff[i-1][j]
for i in range(N):
for j in range(M):
board[i][j] += diff[i][j]
if board[i][j] > 0:
answer += 1
return answer
2) 해설