본문 바로가기
알고리즘/구현

백준 2167번 : 2차원 배열의 합

by Jason95 2021. 1. 2.

문제 링크 : www.acmicpc.net/problem/2167

내 풀이(2021.1.2.) :

#include <iostream>

using namespace std;

int arr[300][300] = { 0 }; // [x][y]

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	int N, M; cin >> N >> M;
	for (int j = 0; j < N; j++) { // x축
		for (int i = 0; i < M; i++) { // y축
			int temp; cin >> temp;
			arr[i][j] = temp;
		}
	}

	int K; cin >> K;
	for (int k = 0; k < K; k++) {
		int sum = 0;
		int i, j, x, y; cin >> i >> j >> x >> y;
		for (int b = j - 1; b <= y - 1; b++) { // x축
			for (int a = i - 1; a <= x - 1; a++) { // y축
				sum += arr[b][a];
			}
		}
		cout << sum << endl;
	}

	return 0;
}

1) 2차원 배열 문제에서 x, y축을 정확히 정의하는 것이 중요하다

2) int의 범위 = -231 ~ 231-1

   unsigned int의 범위 = 0 ~ 232-1

   long의 범위 = -231 ~ 231-1

   long long의 범위 = -263 ~ 263-1