[PCCE 기출문제] 9번 / 이웃한 칸

[PCCE 기출문제] 9번 / 이웃한 칸

각 칸마다 색이 칠해진 2차원 격자 보드판이 있습니다. 그중 한 칸을 골랐을 때, 위, 아래, 왼쪽, 오른쪽 칸 중 같은 색깔로 칠해진 칸의 개수를 구하려고 합니다.

보드의 각 칸에 칠해진 색깔 이름이 담긴 이차원 문자열 리스트 board와 고른 칸의 위치를 나타내는 두 정수 hw가 주어질 때 board[h][w]와 이웃한 칸들 중 같은 색으로 칠해져 있는 칸의 개수를 return 하도록 solution 함수를 완성해 주세요.

https://school.programmers.co.kr/learn/courses/30/lessons/250125


public class Main {
    public static void main(String[] args) {
//        String[][] board = {{"blue", "red", "orange", "red"}, {"red", "red", "blue", "orange"}, {"blue", "orange", "red", "red"}, {"orange", "orange", "red", "blue"}};
//        int h = 1;
//        int w = 1;

        String[][] board = {{"yellow", "green", "blue"}, {"blue", "green", "yellow"}, {"yellow", "blue", "blue"}};
        int h = 0;
        int w = 1;

        var reuslt = solution(board, h, w);

        System.out.println(reuslt);
    }

    public static int solution(String[][] board, int h, int w) {
        int result = 0;
        int maxH = board.length;
        int maxW = board[0].length;

        String currentColor = board[h][w];

        if (h - 1 > -1) {
            String top = board[h - 1][w];
            if (currentColor.equals(top)) {
                result++;
            }
        }

        if (h + 1 < maxH) {
            String bottom = board[h + 1][w];
            if (currentColor.equals(bottom)) {
                result++;
            }
        }

        if (w - 1 > -1) {
            String left = board[h][w - 1];
            if (currentColor.equals(left)) {
                result++;
            }
        }

        if (w + 1 < maxW) {
            String right = board[h][w + 1];
            if (currentColor.equals(right)) {
                result++;
            }
        }

        return result;
    }

}