[PS 백준 - 1.5] 2167번: 2차원 배열의 합

PongkiJoa·2021년 6월 29일

PS Diary - 백준

목록 보기
6/54
post-thumbnail

문제 정보

백준 2167번 - 바로가기

  • 난이도: 브론즈 1
  • 알고리즘: 배열, 누적 합

코멘트

동적할당하기 귀찮아서 2차원 벡터를 이용해서 코드를 짰다. 이 문제는 마지막 (i,j)∼(x,y)(i, j) \sim (x, y) 의 뜻이 모호해서 함정이 숨어 있었다. (1,3)∼(2,3)(1, 3) \sim (2, 3)이라 하면 (1,3), (2,1), (2,2), (2,3)(1,3),\ (2,1),\ (2,2),\ (2,3) 일줄 알았는데 배열에서 사각형 모양으로 범위를 그려 선택해야 했다. 다른 동기가 먼저 틀려줘서 힌트를 얻을 수 있었다. ㅋㅋㅋ


소스 코드

#include <iostream>
#include <vector>

using namespace std;

int main() {
	cin.tie(NULL);
	cout.tie(NULL);
	std::ios::sync_with_stdio(false);

	vector<vector<int>> vec;
	vector<int> tempvec;
	int n, m, num;
	cin >> n >> m;
    
    	// 2차원 벡터 대입 과정
	for (int i = 0; i < n; i++) {
		
		for (int j = 0; j < m; j++) {
			cin >> num;
			tempvec.push_back(num);
		}
		
		vec.push_back(tempvec);
		tempvec.clear();
	}

	int k;
	int a, b, c, d;
	int sum = 0;
	cin >> k;
	for (int i = 0; i < k; i++) {
		cin >> a >> b >> c >> d;

		for (int e = a - 1; e < c; e++) {
			for (int f = b - 1; f < d; f++) {
				sum += vec[e][f];
			}
		}
		cout << sum << "\n";
		sum = 0;
	}

}

0개의 댓글