코딩테스트

[programmers][PCCE] 9. 이웃한 칸

nayoon 2024. 3. 24. 19:08

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 내멋대로 풀기

굳이..4방향만 확인하는데 문제에 나온 것처럼 배열만들고 해야하나 싶어서 아래와 같이 확인

class Solution {
    public int solution(String[][] board, int h, int w) {
        int answer = 0;
        
        String color = board[h][w];
        
        if (h - 1 > -1 && color.equals(board[h - 1][w])) {
            answer += 1;
        }
        
        if (h + 1 < board.length && color.equals(board[h + 1][w])) {
            answer += 1;
        }
        
        if (w - 1 > -1 && color.equals(board[h][w - 1])) {
            answer += 1;
        }
        
        if (w + 1 < board[0].length && color.equals(board[h][w + 1])) {
            answer += 1;
        }
        
        return answer;
    }
}

 

2. 문제에 나온대로 풀기

class Solution {
    public int solution(String[][] board, int h, int w) {
        int answer = 0;
        int n = board.length;
        
        int[] dh = {0, 1, -1, 0};
        int[] dw = {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 += 1;
                }
            }
        }

        return answer;
    }
}