Koala - 11기/코딩테스트 준비 스터디

[백준/Python] 16507번 : 어두운 건 무서워

kwonlabong 2023. 8. 6. 16:18

문제

https://www.acmicpc.net/problem/16507

 

16507번: 어두운 건 무서워

첫 번째 줄에는 사진의 크기를 의미하는 정수 R, C (1 ≤ R, C ≤ 1,000)와 사진 일부분의 밝기 평균을 알아볼 개수를 의미하는 정수 Q (1 ≤ Q ≤ 10,000)가 주어진다. 다음 R개의 줄에 걸쳐 R×C 크기의 사

www.acmicpc.net


풀이

누적 합을 저장하기 위해 새로운 2차원 배열(ps)을 만들어 준다.

이중 반복문을 이용하여 누적합을 저장한다.
ps[i][j] = ps[i][j-1] + ps[i-1][j] - ps[i-1][j-1] + li[i-1][j-1]

입력받은 좌표에 해당하는 밝기의 합을 구한다.
ps[x2][y2] - ps[x2][y1-1] - ps[x1-1][y2] + ps[x1-1][y1-1]

픽셀 수로 나누어 평균을 구한다.
(x2-x1+1)*(y2-y1+1)


코드

import sys
input = sys.stdin.readline

r, c, q = map(int, input().split())
li = [[*map(int, input().split())] for _ in range(r)]

ps = [[0]*(c+1) for _ in range(r+1)]
for i in range(1, r+1):
    for j in range(1, c+1):
        ps[i][j] = ps[i][j-1] + ps[i-1][j] - ps[i-1][j-1] + li[i-1][j-1]

for _ in range(q):
    x1, y1, x2, y2 = map(int, input().split())
    print((ps[x2][y2] - ps[x2][y1-1] - ps[x1-1][y2] + ps[x1-1][y1-1]) // ((x2-x1+1)*(y2-y1+1)))