본문 바로가기
코딩테스트

[프로그래머스] Lv1. 이웃한 칸 - Java

by CuckooBird 2024. 8. 24.

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

 

프로그래머스

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

programmers.co.kr


풀이

import java.util.*;

class Solution {
    static int[] dh= {-1, 1, 0, 0};
    static int[] dw= {0, 0, -1, 1};
    
    public int solution(String[][] board, int h, int w) {
        int answer = 0;
        int r = board.length;
        int c = board[0].length;
        
        for(int i=0;i<4;i++) {
            int next_h= h + dh[i];
            int next_w= w + dw[i];
            if(next_h < 0 || next_h >= r || next_w < 0 || next_w >= c) 
                continue;
            if(board[h][w].equals(board[next_h][next_w])) {
                answer ++;
            }
        }
        return answer;
    }
}

 

한 칸에 대해서 위, 아래, 왼쪽, 오른쪽만 확인하면 되는 문제입니다


회고

그래프 탐색 문제인 줄 알고 BFS 구현했다가 실패가 떴었습니다. 문제를 잘 읽어야 한다는 반성을 하게 되는 문제..!!

사실 입력 출력만 자세히 보고 문제는 잘 안 읽는데 이 문제를 통해서 문제의 핵심은 읽을 줄 알아야 한다는 반성을 하게 되었습니다.