문제
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)))
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/C++] 6236번 : 용돈관리 (0) | 2023.08.06 |
---|---|
[백준/python] 1920번 수 찾기 (0) | 2023.08.06 |
[백준/C++] 23827 수열(Easy) (0) | 2023.08.06 |
[백준/Python] 2512번: 예산 (0) | 2023.08.06 |
[백준/C++] 11660번: 구간 합 구하기 5 (0) | 2023.08.06 |