어흥

[해커랭크] 2D Array - DS (C++) 본문

알고리즘/HackerRank

[해커랭크] 2D Array - DS (C++)

라이언납시오 2021. 2. 3. 15:44
728x90
반응형

문제 링크: www.hackerrank.com/challenges/2d-array/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays

 

2D Array - DS | HackerRank

How to access and use 2d-arrays.

www.hackerrank.com

1. 주의할 점

- H가 90도 뒤집어진 모양의 합을 어떻게 구할 것인가

- 정답이 음수일 수도 있다

 

2. 구현

- H의 중심점을 기준으로 상하좌우 최대 1칸씩만 떨어져있다. 따라서 중심점을 기준으로 Arr[][] 배열을 탐색할 때, 1~Row-1, 1~Col-1까지만 계산한다

- dx[], dy[] 배열을 통해 중심으로부터 H모양에 해당하는 7개의 점을 찾고, 그에 해당하는 숫자를 합한다

int dx[7]={-1,0,1,0,-1,0,1};
int dy[7]={-1,-1,-1,0,1,1,1};
int hourglassSum(vector<vector<int>> arr) {
    int result = -987654321;
    for(int i=1;i<arr.size()-1;i++){
        for(int j=1;j<arr[0].size()-1;j++){
            int temp =0;
            for(int k=0;k<7;k++){
                int nx = j+dx[k];
                int ny = i+dy[k];
                temp+=arr[ny][nx];
            }
            result = max(result,temp);
        }
    }
    return result;
}
728x90
반응형
Comments