<문제>
5개의 대기실을 본 죠르디는 각 대기실에서 응시자들이 거리두기를 잘 기키고 있는지 알고 싶어졌습니다. 자리에 앉아있는 응시자들의 정보와 대기실 구조를 대기실별로 담은 2차원 문자열 배열 places가 매개변수로 주어집니다. 각 대기실별로 거리두기를 지키고 있으면 1을, 한 명이라도 지키지 않고 있으면 0을 배열에 담아 return 하도록 solution 함수를 완성해 주세요.
<코드>
from collections import deque
def bfs(p):
start=[]
for i in range(5):
for j in range(5):
if p[i][j]=='P':
start.append([i,j])
for s in start:
queue=deque([s])
visited=[[0]*5 for i in range(5)]
distance=[[0]*5 for i in range(5)]
visited[s[0]][s[1]]=1
while queue:
y,x=queue.popleft()
dx=[-1,1,0,0]
dy=[0,0,-1,1]
for i in range(4):
nx=x+dx[i]
ny=y+dy[i]
if 0<=nx<5 and 0<=ny<5 and visited[ny][nx]==0:
if p[ny][nx]=='O':
queue.append([ny,nx])
visited[ny][nx]=1
distance[ny][nx]=distance[y][x]+1
if p[ny][nx]=='P' and distance[y][x]<=1:
return 0
return 1
def solution(places):
answer = []
for i in places:
answer.append(bfs(i))
return answer