https://school.programmers.co.kr/learn/courses/30/lessons/250125
2차원 격자판에서 한 위치를 입력받았을 때, 인접한 상하좌우의 칸이 입력받은 위치의 색과 동일한지를 묻는 문제이다.
동일한 색을 갖는 인접한 위치의 갯수를 세면 정답이다.
포인트라고 할 것도 없는 것이 이미 문제에서 어떻게 알고리즘을 짜라고 힌트를 주었다.
입력받은 위치에서 상하좌우를 살펴보고 해당 위치가 2차원 격자 안에 포함되는지를 1차로 살펴본다.
그러면 인덱스 범위 오류를 피할 수 있다.
격자 안에 포함되는 위치라면 입력받은 위치와 색이 같은지 확인하여 같다면 count
를 하나 올려주면 된다.
def in_range(h, w, height, width):
return 0 <= h < height and 0 <= w < width
def solution(board, h, w):
answer = 0
dhs = [0, 1, -1, 0]
dws = [1, 0, 0, -1]
# 보드의 세로 가로 길이
height, width = len(board), len(board[0])
for dh, dw in zip(dhs, dws):
# 다음으로 살펴볼 위치(nh, nw)
nh, nw = h + dh, w + dw
# 범위에 포함 안된다면 볼 필요 없음
if not in_range(nh, nw, height, width):
continue
# 범위에 포함되면 색 비교
if board[nh][nw] == board[h][w]:
answer += 1
return answer
O(1)