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

PongkiJoa·2021년 6월 29일
0

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;
	}

}
profile
컴공 20학번

0개의 댓글

관련 채용 정보