inblog logo
|
sxias
    Programmers_CT

    [Programmers_CT] 18. 이웃한 칸

    문정준's avatar
    문정준
    Feb 26, 2025
    [Programmers_CT] 18. 이웃한 칸
    Contents
    1. 문제 설명제한 사항2. 입출력 예시3. 코드 작성4. 테스트 결과5. 채점
    💡
    프로그래머스 코딩 테스트 2. 이웃한 칸
     

    1. 문제 설명

    notion image
     

    제한 사항

    notion image

    2. 입출력 예시

    notion image
    notion image

    3. 코드 작성

    class Solution { public int solution(String[][] board, int h, int w) { int answer = 0; // 같은 색 칸의 개수 int n = board.length; // 2차원 보드 (정사각형) // x, y 증가분 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) && (w_check >= 0) && (h_check < n) && (w_check < n)){ if(board[h][w].equals(board[h_check][w_check])) { answer++; } } } // 결과 전송 return answer; } }
    1. 같은 색 칸의 개수를 셀 변수 answer 선언
    1. board의 크기를 저장할 변수 n 선언
    1. x, y를 상, 하, 좌, 우와 비교하기 위해 x, y의 증가분을 각각 dh, dw로 설정
      1. dh = [0, 1, -1, 0]
      2. dw = [1, 0, 0, -1]
    1. 상, 하, 좌, 우의 총 4칸을 검사하기 때문에 반복문은 0에서 3까지 반복
      1. 기준점의 옆 칸의 좌표를 저장할 h_check, w_check 선언
        1. h_check = h + dh[i];
        2. w_check = w + dw[i];
      2. h_check과 w_check이 0 이상이고, h_check과 w_check이 n 미만일 때 칸 검사
          • IndexOutOfBounds 오류 방지
          • 원래 칸의 색과 다른 칸의 색이 같으면, answer++
            • String은 연산자로 비교하는 것이 아닌, String.equals() 사용
            • if(board[h][w].equals(board[h_check],[w_check])) answer++;

    4. 테스트 결과

    notion image
     

    5. 채점

    notion image
    Share article
    Contents
    1. 문제 설명제한 사항2. 입출력 예시3. 코드 작성4. 테스트 결과5. 채점

    Sxias ㆍ a32176740@gmail.com

    RSS·Powered by Inblog