https://school.programmers.co.kr/learn/courses/30/lessons/250125?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이웃한 칸이라는 문제 Java로 풀이하겠습니다.
이 문제는 주어진 2차원 격자 보드에서 특정 위치 (h, w)의 칸과 같은 색깔로 색칠된 이웃한 칸의 개수를 찾는 문제입니다.
이웃한 칸은 위, 아래, 왼쪽, 오른쪽 방향에 위치한 칸을 의미합니다.
- 주어진 위치에서 상, 하, 좌, 우로 이동하며 이웃한 칸의 색상을 확인합니다.
- 이웃한 칸의 색상이 현재 위치의 칸과 같으면 개수를 증가시킵니다.
- 모든 방향에 대해 이웃한 칸을 확인한 후, 같은 색으로 색칠된 칸의 개수를 반환합니다.
저는 다음과 같이 풀이하였습니다.
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};
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 (board[h][w].equals(board[hCheck][wCheck])) {
count++;
}
}
}
return count;
}
}
- 이웃한 칸 중 같은 색으로 색칠한 칸의 개수를 셀 count라는 변수를 선언합니다.
- 'dh'와 'dw'배열은 각각 상, 하, 좌, 우 방향으로의 이동을 나타냅니다.
- 네 가지 방향에 대해 이웃한 칸을 확인하고, 이웃한 칸의 좌표가 유효한 범위 내에 있는지 확인합니다.
- 이웃한 칸의 색상이 현재 위치의 칸과 같으면 개수(count)를 증가시킵니다.
- 최종적으로 같은 색으로 색칠된 이웃한 칸의 개수(count)를 반환합니다.
저는 위와 같은 로직으로 문제를 풀이하였습니다.
이견이 있으시다면 자유롭게 댓글 남겨주세요.

'Algorithm > CodingTest' 카테고리의 다른 글
[Programmers] 과일 장수(Java) (0) | 2024.01.12 |
---|---|
[Programmers] PCCE 기출문제 10번 / 데이터 분석 (0) | 2024.01.07 |
[Baekjoon] 1173번 운동 (Java) (2) | 2023.11.12 |
[Baekjoon] 1049번 기타줄 (Java) (0) | 2023.11.05 |
[Baekjoon] 1021번 회전하는 큐 (Java) (0) | 2023.11.01 |