https://school.programmers.co.kr/learn/courses/30/lessons/250125
from collections import deque
def solution(board, h, w):
n = len(board) # len(board) = len(board[n]) 이므로 정사각형
def check(a, b):
q = deque()
q.append((a, b))
count = 0
# 상하좌우 체크용 변수
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
while q:
x, y = q.popleft()
for i in range(4):
nx = dx[i] + x
ny = dy[i] + y
if 0 <= nx < n and 0 <= ny < n: # 범위 내에 존재
if board[x][y] == board[nx][ny]: # 색깔이 같은 경우
count += 1
return count
return check(h, w)
bfs였으면 색깔이 같은 경우 count += 1 하는 곳에 q.append((nx, ny)) 코드가 추가된다. 그러나 상하좌우만 탐색하므로 추가하지 않았다. 더불어 while문도 필요없다.
def solution(board, h, w):
length = len(board[0])
numberOfSameColor = 0
dh, dw = [0, 1, -1, 0], [1, 0, 0, -1]
for i in range(4):
h_check, w_check = h + dh[i], w + dw[i]
if 0 <= h_check < length and 0 <= w_check < length:
if board[h_check][w_check] == board[h][w]:
numberOfSameColor += 1
return numberOfSameColor