본문 바로가기
CodeSignal

Minesweeper

by Doromi 2023. 12. 13.
728x90
반응형

Minesweeper 게임의 보드를 생성하는 것입니다. 게임 보드는 몇 개의 지뢰와 지뢰를 포함하지 않은 셀들로 이루어져 있으며, 지뢰를 포함하지 않은 각 셀에는 해당 셀의 주변에 있는 지뢰의 총 개수가 표시되어야 합니다.

주어진 행렬 matrix는 지뢰가 있는 곳을 true로, 지뢰가 없는 곳을 false로 나타냅니다. 이 행렬을 기반으로 Minesweeper 게임의 초기 설정을 만들어야 합니다.

int[][] solution(bool[][] matrix) {
    int[][] ret = new int[matrix.Length][];
    int[] px = {-1, 0, 0, 1, -1, -1, 1, 1};
    int[] py = {0, -1, 1, 0, -1, 1, -1, 1};
    
    for(int i = 0; i < matrix.Length; i++) {
        ret[i] = new int[matrix[0].Length];
    }
    
    for(int i = 0; i < matrix.Length; i++) {
        for(int j = 0; j < matrix[0].Length; j++) {
            int count = 0;
            
            for(int k = 0; k < 8; k++) {
                int ni = i + px[k];
                int nj = j + py[k];
                
                if(ni >= 0 && ni < matrix.Length && nj >= 0 && nj < matrix[0].Length) {
                    if(matrix[ni][nj]) {
                        count++;
                    }
                }
            }
            
            ret[i][j] = count;
        }
    }
    
    return ret;
}
px와 py 배열은 각각 행과 열의 이동을 나타냅니다. 주변 8방향으로 이동하기 위해 사용됩니다.
ret 배열은 결과를 저장할 배열로, 지뢰의 개수를 담을 예정입니다.
먼저, ret 배열을 초기화합니다.
중첩된 두 개의 반복문을 사용하여 주어진 matrix의 각 셀에 대해 주변 지뢰의 개수를 계산합니다.
내부 반복문에서는 현재 셀의 상하좌우 및 대각선에 있는 셀들을 검사하여 지뢰가 있는지 확인하고, 있다면 count를 증가시킵니다.
외부 반복문에서 각 셀에 대한 주변 지뢰의 개수를 계산하여 ret 배열에 저장합니다.
최종적으로 완성된 ret 배열을 반환합니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

variableName  (0) 2023.12.16
evenDigitsOnly  (0) 2023.12.15
Box Blur  (0) 2023.12.12
avoidObstacles  (0) 2023.12.12
arrayMaximalAdjacentDifference  (0) 2023.12.11