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차원 배열합의 문제
📍풀이과정
1. 처음에는 그냥 막연하게 이중 for문으로 풀려고 했는데 실패,, => 그 이유는 arr[1000][1000]으로 잡았기 때문임
2. 그럼 가로합 & 세로합을 만들어서 풀어야 할 듯
📍풀이과정
#include <iostream>
#include <cstdio>
using namespace std;
const int MAX =1000;
int arr[MAX][MAX];
int sum[MAX][MAX];
int temp;
int main(){
int n,m,q;
scanf("%d %d %d",&n,&m,&q);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>arr[i][j];
}
}
//가로 방향 구간합
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
sum[i][j]=sum[i][j-1]+arr[i][j];
}
}
//세로 방향 구간합
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
sum[j][i]=sum[j-1][i]+sum[j][i];
}
}
//이제 나누기 및 전체 합
while(q--){
int r1, c1, r2, c2;
scanf("%d %d %d %d",&r1,&c1,&r2,&c2);
cout<<(sum[r2][c2]-sum[r1-1][c2]-sum[r2][c1-1]+sum[r1-1][c1-1])/((r2-r1+1)*(c2-c1+1)) << '\n';
}
return 0;
}
#include <iostream>
#include <cstdio>
using namespace std;
int arr[1001][1001];
int sum[1001][1001];
int main(){
int n,m,q;
cin>>n>>m>>q;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>arr[i][j];
}
}
//가로 방향 구간합
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
sum[i][j]=sum[i][j-1]+arr[i][j];
}
}
//세로 방향 구간합
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
sum[j][i]=sum[j-1][i]+sum[j][i];
}
}
//이제 나누기 및 전체 합
while(q--){
int r1, c1, r2, c2;
cin >> r1 >> c1 >> r2 >> c2;
cout<<(sum[r2][c2]-sum[r1-1][c2]-sum[r2][c1-1]+sum[r1-1][c1-1])/((r2-r1+1)*(c2-c1+1)) << '\n';
}
return 0;
}'[C++] 백준' 카테고리의 다른 글
| [백준 1302번]베스트셀러 (0) | 2023.08.02 |
|---|---|
| [백준 2776번] 암기왕 (0) | 2023.08.02 |
| [백준 1966번] 프린터 큐 (0) | 2023.07.26 |
| [백준 2947번] 나무조각 (0) | 2023.07.25 |
| [백준 1551번] 수열의 변화 (0) | 2023.07.25 |
댓글