프로그래머스 이웃한 칸 JAVA 풀이

2026. 6. 18. 17:50·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


📌 문제 개요

2차원 문자열 배열 board가 주어진다.

각 칸에는 색깔 이름이 문자열로 저장되어 있고, 특정 위치를 나타내는 h, w가 주어진다.

 

이때 board[h][w]와 위, 아래, 왼쪽, 오른쪽으로 인접한 칸들 중 같은 색깔을 가진 칸의 개수를 구하는 문제이다.


📌 접근 방법

현재 위치의 색깔을 기준으로 상하좌우 네 방향을 확인한다.

2차원 배열에서 상하좌우 이동은 방향 배열을 사용하면 깔끔하게 처리할 수 있다.

int[] dh = {0, 1, -1, 0};
int[] dw = {1, 0, 0, -1};

각 방향으로 이동한 좌표가 보드 범위 안에 있는지 확인한 뒤, 색깔이 같으면 count를 증가시킨다.


📌 핵심 아이디어

1. 기준 색깔 저장하기

String color = board[h][w];

현재 선택한 칸의 색깔을 저장해두고, 주변 칸과 비교한다.

 

2. 상하좌우 방향 배열 만들기

각 인덱스는 하나의 방향을 의미한다.

int[] dh = {0, 1, -1, 0};
int[] dw = {1, 0, 0, -1};
h + dh[i]
w + dw[i]

형태로 이동할 칸의 좌표를 구할 수 있다.

 

3. 보드 범위 확인하기

상하좌우를 확인하다 보면 보드 밖 좌표가 나올 수 있다.

따라서 배열에 접근하기 전에 반드시 범위 체크를 먼저 해야 한다.

if (hCheck >= 0 && hCheck < n && wCheck >= 0 && wCheck < n)

 

4.문자열 비교하기

Java에서 문자열 값을 비교할 때는 ==가 아니라 equals()를 사용해야 한다.

if (color.equals(board[hCheck][wCheck])) {
    count++;
}

📌 전체 코드

class Solution {
    public int solution(String[][] board, int h, int w) {
        int n = board.length;
        int count = 0;

        int[] dh = {0, 1, -1, 0};
        int[] dw = {1, 0, 0, -1};

        String color = board[h][w];

        for (int i = 0; i < 4; i++) {
            int hCheck = h + dh[i];
            int wCheck = w + dw[i];

            if (hCheck >= 0 && hCheck < n && wCheck >= 0 && wCheck < n) {
                if (color.equals(board[hCheck][wCheck])) {
                    count++;
                }
            }
        }

        return count;
    }
}
 

📄 정리

  • 선택한 칸의 색깔과 상하좌우 칸의 색깔을 비교하는 문제이다.
  • 방향 배열을 사용하면 네 방향 탐색을 간결하게 구현할 수 있다.
  • 배열 범위 체크를 먼저 해야 IndexOutOfBoundsException을 방지할 수 있다.
  • 문자열 비교는 equals()를 사용해야 한다.
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 JadenCase 문자열 만들기 JAVA 풀이 (문자열, 구현)  (0) 2026.06.20
프로그래머스 최댓값과 최솟값 JAVA 풀이 (문자열, 구현)  (0) 2026.06.18
프로그래머스 실패율 JAVA 풀이 (정렬, 구현)  (0) 2026.06.17
프로그래머스 덧칠하기 JAVA 풀이 (그리디)  (0) 2026.06.16
프로그래머스 소수 만들기 JAVA 풀이 (조합, 소수 판별)  (0) 2026.06.16
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 JadenCase 문자열 만들기 JAVA 풀이 (문자열, 구현)
  • 프로그래머스 최댓값과 최솟값 JAVA 풀이 (문자열, 구현)
  • 프로그래머스 실패율 JAVA 풀이 (정렬, 구현)
  • 프로그래머스 덧칠하기 JAVA 풀이 (그리디)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    level0
    정처기
    정렬
    solved.ac
    자바
    기출문제
    프로그래머스
    정처기실기
    시뮬레이션
    java
    Level2
    피보나치
    level1
    수학
    문자열
    코딩테스트
    백준
    배열
    실기
    브루트포스
    알고리즘
    구현
    자료구조
    완전탐색
    정보처리기사
    정처기오답노트
    dp
    백엔드개발자
    springboot
    정보처리기사 실기 기출문제
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 이웃한 칸 JAVA 풀이
상단으로

티스토리툴바