[HackerRank/C++] Cavity Map

2023. 2. 8. 09:04코딩테스트 해커랭크/Algorithms -Easy

string을 담는 vector grid를 인자로 받으며 각 문자열은 grid에서 깊이를 나타낸다

 

특정 인덱스가 상, 하, 좌, 우의 값보다 작다면 구덩이로 판정해서 해당 인덱스의 값을 X로 변경하고 return 한다

vector<string> cavityMap(vector<string> grid)
{
    for (int y = 1; y < grid.size() - 1; ++y)
    {
        for (int x = 1; x < grid[y].size() - 1; ++x)
        {
            if (grid[y][x] > grid[y + 1][x] &&
                grid[y][x] > grid[y - 1][x] &&
                grid[y][x] > grid[y][x + 1] &&
                grid[y][x] > grid[y][x - 1])
                grid[y][x] = 'X';
        }
    }
    
    return grid;
}

사실상 2차원 배열이기 때문에 배열에 대한 개념이 잘 잡혀있다면 어렵지 않게 풀 수 있다

 

맨 끝쪽은 상, 하, 좌, 우 네방향이 전부 존재하지 않기 때문에 시작과 끝을 인덱스 하나씩 당겨서 for문을 실행한다

 

해당 인덱스의 상, 하, 좌, 우 네곳이 전부 해당 인덱스보다 작다면 구덩이이므로 값을 X로 변경한다

 

반복문이 종료되면 grid를 return 한다