728x90
https://www.acmicpc.net/problem/11660
소스코드 & 문제풀이
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int arr[1025][1025]; //2차원 배열 사용합니다
int main(void)
{
int N, M; //N*N개의 수를 받을 변수 N과 M번 반복할 변수를 선언합니다
int x1, x2, y1, y2;
scanf("%d %d", &N, &M); //변수 N과 M을 입력받습니다
//2차원 배열을 통해 N행 N열의 들어갈 수를 입력받습니다
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
scanf("%d", &arr[i][j]);
}
}
//(1,1)부터 현재 해당하는 배열까지의 (전체)합을 구해주는 반복문입니다
//입력한 배열의 값을 같은 열 위아래로 더한 값을 현재 위치에 저장합니다
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
arr[i][j] = arr[i][j] + arr[i - 1][j];
}
}
//입력한 배열의 값 같은 행 왼쪽오른쪽 더한 값을 현재 위치에 저장합니다
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
arr[i][j] = arr[i][j] + arr[i][j - 1];
}
}
for (int i = 1; i <= M; i++)
{
scanf("%d %d %d %d", &x1, &y1, &x2, &y2); // 횟수 M번 반복하며 x행 y열 입력받습니다
//앞서 구한 배열합에서 범위에 포함되지 않는 행과 열을 빼주고
//뺀 행과열의 중복된 범위를 다시 더해줍니다
printf("%d\n", arr[x2][y2] - arr[x1 - 1][y2] - arr[x2][y1 - 1] + arr[x1 - 1][y1 - 1]);
}
return 0;
}
예제 입출력 결과
728x90
'백준(BaekJoon)' 카테고리의 다른 글
[BaekJoon/C] No.1027 : 고층 건물 (1) | 2024.11.12 |
---|---|
[BaekJoon/C] No.1018 : 체스판 다시 칠하기 (0) | 2024.11.07 |
[BaekJoon/C] No.1026 : 보물 (0) | 2024.10.08 |
[BaekJoon/C] No.1021 : 회전하는 큐 (0) | 2024.10.08 |
[BaekJoon/C] No.1016 : 제곱 ㄴㄴ 수 (1) | 2024.09.27 |