본문 바로가기
알고리즘 문제

[알고리즘 문제] Mine

by 박연호의 개발 블로그 2019. 3. 31.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int height = sc.nextInt();
        int width = sc.nextInt();

        int y = sc.nextInt() - 1;
        int x = sc.nextInt() - 1;
        int[][] ary = new int[height][width];

        int mineCount = 0;

        for (int a = 0; a < height; a++) {
            for (int b = 0; b < width; b++) {
                ary[a][b] = sc.nextInt();
            }
        }

        if (ary[y][x] == 1) {
            System.out.println("game over");
            return;
        }

        if (y - 1 >= 0 && ary[y - 1][x] == 1) { // 12시
            mineCount++;
        }

        if (y + 1 <= height - 1 && ary[y + 1][x] == 1) { // 6시
            mineCount++;
        }

        if (x + 1 <= width - 1 && ary[y][x + 1] == 1) { // 3시
            mineCount++;
        }

        if (x - 1 >= 0 && ary[y][x - 1] == 1) { // 9시
            mineCount++;
        }

        if (x + 1 <= width - 1 && y - 1 >= 0 && ary[y - 1][x + 1] == 1) { // 1사분면
            mineCount++;
        }

        if (x - 1 >= 0 && y - 1 >= 0 && ary[y - 1][x - 1] == 1) { // 2사분면
            mineCount++;
        }

        if (x - 1 >= 0 && y + 1 <= height - 1 && ary[y + 1][x - 1] == 1) { // 3사분면
            mineCount++;
        }

        if (x + 1 <= width && y + 1 >= 0 && ary[y + 1][x + 1] == 1) {
            mineCount++;
        }

        System.out.println(mineCount);
    }
}

지뢰가 표시된 행렬과 내가 클릭한 위치의 좌표가 주어질 때 상,하,좌,우, 대각선 총 8곳에 지뢰가 몇개 있는지 찾는 문제이다. 

간단하게 if문으로 8방향을 하나씩 검사하면서 마약에 지뢰(1)가 발견되면 mineCount++를 해주었다.

'알고리즘 문제' 카테고리의 다른 글

[알고리즘 문제] 대푯값  (0) 2019.04.02
[알고리즘] Class President  (0) 2019.04.02
[알고리즘 문제] ColorPaper  (0) 2019.03.30
[알고리즘 문제] Offset  (0) 2019.03.27
[알고리즘 문제] Box Painting  (0) 2019.03.27