백준 2167 2차원 배열의 합 / C++

이유참치·2025년 12월 15일

백준

목록 보기
63/249

문제 : 2167

풀이 point

행렬의 행과 열에 따라 for문의 시작과 끝을 조정하고
수들을 더해준다.

풀이 방법

for문의 시작과 끝이 중요하다.
for문의 행 시작i, 끝x
for문의 열 시작j, 끝y

배열의 합이 int MAX값보다 작으므로 int로 풀이 진행

주의할 점은 문제에서 1인덱스를 사용하기 때문에 그에 맞게 인덱스를 조정해줘야한다.
똑같이 1인덱스를 사용하거나 0인덱스를 사용하고 범위를 조정할 수 있다.

코드

//백준 2167, 2차원 배열의 합

#include <iostream>

int main(){

    int N, M;
    std::cin >> N >> M;
    int grid[305][305] = {0};

    for(int i{1}; i<=N; ++i){
        for(int j{1}; j<=M; ++j){
            std::cin >> grid[i][j];
        }
    }
    
    int T; std::cin >> T;
    while(T--){
        int i, j, x, y;
        int ans{0};
        std::cin >> i >> j >> x >> y;
        for(int col{i}; col<=x; ++col){
            for(int row{j}; row<=y; ++row){
                ans += grid[col][row];
            }
        }
        std::cout << ans << '\n';
    }
    
    return 0;
}
profile
임아리 - 대학생

0개의 댓글