[프로그래머스] PCCP 기출문제: 9번 / 이웃한 칸

조승현·2024년 3월 17일

알고리즘

목록 보기
10/15

문제

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

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

변수

  • 이차원 문자열 리스트 board
  • 고른 칸의 위치 h, w

결과값

  • board[h][w]와 이웃한 칸들 중 같은 색으로 칠해져 있는 칸의 개수

알고리즘

문제에 의사코드가 그대로 나와있습니다

물론 이대로 하지 않아도 된다고 문제에 나와있습니다

코드

class Solution {
    public int solution(String[][] board, int h, int w) {
        int answer = 0;
        int n = board.length;
        
        int[] dh = new int[] {0, 1, -1, 0};
        int[] dw = new int[] {1, 0, 0, -1};
        
        for (int i=0 ; i<4 ; i++){
            int h_check = h + dh[i];
            int w_check = w + dw[i];
            if (h_check >= 0 && h_check < n && w_check >=0 && w_check < n)
                if (board[h][w].equals(board[h_check][w_check]))
                    answer++;
        }
        return answer;
    }
}

마무리

그냥 설명되어있는 내용을 옮기기만 하면 돼서.. 생각보다 많이 쉬웠다
찾아보니까 dfs 알고리즘을 이용하는 문제랍니다

0개의 댓글