<문제>
건물의 내구도를 나타내는 2차원 정수 배열 board와 적의 공격 혹은 아군의 회복 스킬을 나타내는 2차원 정수 배열 skill이 매개변수로 주어집니다. 적의 공격 혹은 아군의 회복 스킬이 모두 끝난 뒤 파괴되지 않은 건물의 개수를 return하는 solution함수를 완성해 주세요.
<코드>
def solution(board, skill):
answer=0
tmp=[[0 for j in range(len(board[0])+1)]for i in range(len(board)+1)]
for t, r1, c1, r2, c2, d in skill:
if t==2:
d= -d
tmp[r1][c1]-=d
tmp[r1][c2+1]+=d
tmp[r2+1][c1]+=d
tmp[r2+1][c2+1]-=d
for i in range(len(tmp)-1):
for j in range(len(tmp[0])-1):
tmp[i][j+1]+=tmp[i][j]
for i in range(len(tmp)-1):
for j in range(len(tmp[0])-1):
tmp[i+1][j]+=tmp[i][j]
for i in range(len(board)):
for j in range(len(board[0])):
if board[i][j]+tmp[i][j]>0:
answer+=1
return answer
<설명>
단순하게 구현했다가 효율성에서 실패하게 된다.
그래서 누적합을 사용해서 이중포문을 사용하지 않도록 노력했다.
링크텍스트 해당 블로그를 보고 풀이를 이해했다.