https://programmers.co.kr/learn/courses/30/lessons/92344
누적합을 활용한 문제 - 2차원 배열상에서 누적합을 어떻게 사용하는지 배웠다
def solution(board, skill):
n,m = len(board), len(board[0])
change = [[0]*(m+1) for _ in range(n+1)]
answer = 0
for info in skill:
type, r1, c1, r2, c2, degree = info
if type == 1 : degree = -degree
change[r1][c1] += degree
change[r1][c2+1] -= degree
change[r2+1][c1] -= degree
change[r2+1][c2+1] += degree
for i in range(1,n):
for j in range(m):
change[i][j] += change[i-1][j]
for i in range(n):
for j in range(1,m):
change[i][j] += change[i][j-1]
for i in range(n):
for j in range(m):
if board[i][j] + change[i][j] >0: answer += 1
return answer
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 선입 선출 스케줄링(Python) (0) | 2022.01.31 |
---|---|
[프로그래머스] 사라지는 발판(Python) (0) | 2022.01.30 |
[프로그래머스] 양과 늑대(Python) (0) | 2022.01.28 |
[프로그래머스] 주차 요금 계산(Python) (0) | 2022.01.23 |
[프로그래머스] 양궁대회 (Python) (0) | 2022.01.23 |
댓글