https://school.programmers.co.kr/learn/courses/30/lessons/250125
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 개요
선택한 칸의 색과 같은 색을 가진 이웃 칸의 개수를 구하는 문제이다.
이웃칸은 선택한 칸의 상/하/좌/우에 위치한 칸들이다.
이웃칸들을 탐색할 때, board의 범위 밖으로 벗어나지 않게 주의해야 한다.
알고리즘 및 풀이
1. 변수 설정
def solution(board, h, w):
ans = 0
n, m = len(board), len(board[0])
color = board[h][w]
dx = [0, 1, 0, -1]
dy = [-1, 0, 1, 0]
여기서 탐색에 필요한 변수들을 설정한다.
dx와 dy는 상/하/좌/우로 탐색하는 과정에서, 탐색할 위치의 좌표를 구하기 위해 필요하다.
2. 4개 방향(상, 하, 좌, 우)으로 탐색을 시작한다
for i in range(4):
# 1) 탐색할 곳의 좌표 파악
nx = h + dx[i]
ny = w + dy[i]
# 2) 좌표가 탐색범위를 벗어나지 않고, 색깔이 같은 지 판단
if -1 < nx < n and -1 < ny < m and board[nx][ny] == color:
ans += 1
여기서 살펴볼 좌표를 구한다.
앞서 구한 좌표가 탐색 범위를 벗어나지 않고, 색깔이 같다면 ,찾은 칸의 갯수를 증가시킨다.
전체 코드
def solution(board, h, w):
ans = 0
n, m = len(board), len(board[0])
color = board[h][w]
dx = [0, 1, 0, -1]
dy = [-1, 0, 1, 0]
for i in range(4):
# 1) 탐색할 곳의 좌표 파악
nx = h + dx[i]
ny = w + dy[i]
# 2) 좌표가 탐색범위를 벗어나지 않고, 색깔이 같은 지 판단
if -1 < nx < n and -1 < ny < m and board[nx][ny] == color:
ans += 1
return ans
'CodingTest' 카테고리의 다른 글
[PCCE 기출문제] 10번 / 데이터 분석 (0) | 2024.04.03 |
---|---|
연속된 부분 수열의 합 (1) | 2024.03.27 |
과제 진행하기 (0) | 2024.03.16 |
[PCCP 기출문제] 2번 / 석유 시추 (0) | 2024.03.05 |
[PCCP 기출문제] 1번 / 붕대 감기 (0) | 2024.03.04 |