https://school.programmers.co.kr/learn/courses/30/lessons/250125
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 풀이
이 문제는 2차원 배열(격자)에서 특정 위치의 상하좌우 칸을 탐색하여 동일한 색상의 개수를 계산하는 문제입니다. 인접 탐색과 조건 검사가 핵심입니다.
Python 코드
def solution(board, h, w):
# 보드의 크기
n = len(board)
# 결과를 저장할 변수
count = 0
# 상하좌우 이동 좌표
dh = [0, 1, -1, 0] # 행 변화량
dw = [1, 0, 0, -1] # 열 변화량
# 기준 색상
color = board[h][w]
# 인접 4칸 탐색
for i in range(4):
# 이동한 좌표 계산
h_check = h + dh[i]
w_check = w + dw[i]
# 유효한 범위인지 확인
if 0 <= h_check < n and 0 <= w_check < n:
# 동일한 색상인지 확인
if board[h_check][w_check] == color:
count += 1
return count
코드 설명
- board의 크기 계산:
- n = len(board)로 2차원 배열의 크기를 계산합니다. 이는 유효한 탐색 범위를 확인하는 데 사용됩니다.
- 상하좌우 이동 좌표 정의:
- dh와 dw를 사용해 각각의 방향으로의 이동을 정의합니다.
- 기준 색상 저장:
- color = board[h][w]를 통해 주어진 위치의 색상을 저장합니다.
- 인접 칸 탐색:
- 반복문을 통해 상하좌우의 칸(h_check, w_check)을 계산합니다.
- if 0 <= h_check < n and 0 <= w_check < n 조건으로 유효한 범위인지 검사합니다.
- 인접 칸의 색상이 기준 색상(color)과 동일하면 count를 1 증가시킵니다.
- 결과 반환:
- 인접한 동일 색상의 개수(count)를 반환합니다.
출제 의도
- 인접 탐색 구현:
- 2차원 배열의 특정 위치에서 인접한 칸을 효율적으로 탐색하는 방법을 학습합니다.
- 조건 검사:
- 배열의 유효 범위 조건 및 값 비교를 통해 논리적 처리 능력을 평가합니다.
- 배열 인덱스 처리:
- 인덱스 계산 및 유효성을 체크하는 방법을 연습합니다.
핵심 문법
- 2차원 배열 탐색:
- 행과 열의 이동을 위한 방향 벡터(dh, dw) 정의.
- 이동한 좌표(h_check, w_check) 계산.
- 조건 검사:
- if 0 <= h_check < n and 0 <= w_check < n을 통해 배열 경계를 벗어나지 않는지 확인.
- 비교 연산:
- 기준 색상과 인접한 칸의 색상을 비교하여 동일한 경우 처리.
예제 설명
예제 1
입력:
board = [["blue", "red", "orange", "red"],
["red", "red", "blue", "orange"],
["blue", "orange", "red", "red"],
["orange", "orange", "red", "blue"]]
h, w = 1, 1
실행 과정:
- color = "red"
- 인접 칸:
- (1, 2): "blue" → 다른 색.
- (2, 1): "orange" → 다른 색.
- (1, 0): "red" → 같은 색 → count += 1.
- (0, 1): "red" → 같은 색 → count += 1.
- 결과: count = 2.
출력:
2
알고리즘 분류
- 시뮬레이션:
- 격자를 순차적으로 탐색하며 문제의 조건을 구현.
- 브루트포스(완전 탐색):
- 인접 칸(최대 4칸)을 모두 검사하는 방식.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 | Python | 단순구현 | 둘만의 암호 (Lv.1) (0) | 2025.02.27 |
---|---|
프로그래머스 | Python | Hash, Greedy | 대충 만든 자판 (Lv.1) (0) | 2025.02.27 |
프로그래머스 | Python | 그리디 | 체육복 (Lv.1) (0) | 2025.02.27 |
프로그래머스 | Python | stack, 자료구조 | 햄버거 만들기 (Lv.1) (0) | 2025.02.27 |
프로그래머스 | Python | stack, 자료구조 | 크레인 인형뽑기 게임 (Lv.1) (0) | 2025.02.26 |