본문 바로가기

프로그래머스(Java)/Level 1

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

728x90

코드 힌트

  1. 배열 접근 방법:
    • 상하좌우 네 방향을 한 번에 처리하기 위해 dy, dx 배열을 사용합니다.
    • int[] dx = {1,0,-1,0}     int[] dy = {0,1,0,-1}; 로 설정하시면됩니다.
    • for문을 이용해서 각 방향에 대해 좌표 이동을 계산하여 nx, ny 변수에 저장합니다.
  2. 색상 비교:
    • 주어진 좌표 (h, w)에서 상하좌우에 있는 좌표들의 색상과 targetColor를 비교하여 같은 색상의 개수를 세는 방법입니다.
  3. 결과 반환:
    • 최종적으로 result 변수에 저장된 값, 즉 주어진 좌표에서 상하좌우에 있는 같은 색상의 개수를 반환합니다.

 


더보기
class Solution {
    public int solution(String[][] board, int h, int w) {
        // board의 길이
        int n = board.length;
        // 같은 색의 갯수를 세기 위한 변수
        int result = 0;
        
        // 이동할 방향을 나타내는 배열 (상, 하, 좌, 우)
        int[] dy = {0, 1, 0, -1};
        int[] dx = {1, 0, -1, 0};
        
        // 기준이 되는 색상
        String targetColor = board[h][w];
        
        // 상하좌우 네 방향에 대해 확인
        for (int i = 0; i < 4; i++) {
            // 다음 좌표 계산
            int nx = dx[i] + w;
            int ny = dy[i] + h;
            
            // 유효한 범위 내에서 동일한 색상인지 확인
            if (nx >= 0 && ny >= 0 && nx < n && ny < n 
                && targetColor.equals(board[ny][nx])) {
                result++; // 같은 색상의 개수 증가
            }
        }
        
        return result;
    }
}
728x90