넘치게 채우기

[LeetCode] 2373. Largest Local Values in a Matrix 본문

PS/LeetCode

[LeetCode] 2373. Largest Local Values in a Matrix

riveroverflow 2024. 5. 12. 15:05
728x90
반응형

https://leetcode.com/problems/largest-local-values-in-a-matrix/description/

leetcode - Largest Local Values in a Matrix

문제 유형 : 행렬, 구현

문제 난이도 : Easy

 

문제

You are given an n x n integer matrix grid.

Generate an integer matrix maxLocal of size (n - 2) x (n - 2) such that:

  • maxLocal[i][j] is equal to the largest value of the 3 x 3 matrix in grid centered around row i + 1 and column j + 1.

In other words, we want to find the largest value in every contiguous 3 x 3 matrix in grid.

Return the generated matrix.

 

n x n 의 정수 행렬 grid가 있다.

정수 배열 maxLocal을 n-2 x n-2의 크기로 만들어라:

maxLocal[i][j]는 grid[i+1][j+1]을 기준으로 3 x 3부분행렬에서의 가장 큰 값으로 해라.

 

풀이

행과 열을 1 부터 n-1범위를 2차원배열로 반복하면서, 그 좌표기준 3x3의 최대 크기를 일일히 구해서 저장시키면 된다.

 

코드

C++

class Solution {
public:
    int getMax(int i, int j, vector<vector<int>>& grid ) {
        int maxVal = -1e9;
        for(int row = i-1; row <= i+1; row++) {
            for(int col = j-1; col <= j+1; col++) {
                maxVal = max(maxVal, grid[row][col]);
            }
        }

        return maxVal;
    }
    vector<vector<int>> largestLocal(vector<vector<int>>& grid) {
        int n = grid.size();
        vector<vector<int>> ans (n-2, vector<int>(n-2, -1e9));

        for(int i = 1; i < n-1; i++) {
            for(int j = 1; j < n-1; j++) {
                ans[i-1][j-1] = getMax(i, j, grid);
            }
        }

        return ans;
    }
};
728x90
반응형