각 지점에서 거리 2까지만 확인해주면 됩니다. 거리두기 안지켰으면 바로 return False 해줍니다.
delta = ((0, 1), (1, 0), (0, -1), (-1, 0))
def is_check(place):
q = []
for i in range(5):
for j in range(5):
if place[i][j] == 'P':
q.append((i, j, 0, set()))
while q:
x, y, dist, visited = q.pop()
visited.add((x, y))
for dx, dy in delta:
nx, ny = x + dx, y + dy
if 0 <= nx < 5 and 0 <= ny < 5 and (nx, ny) not in visited:
if place[nx][ny] == 'X':
continue
elif place[nx][ny] == 'O':
if dist < 2:
q.append((nx, ny, dist + 1, visited))
else:
if dist < 2:
return False
return True
def solution(places):
answer = []
for place in places:
ret = 1 if is_check(place) else 0
answer.append(ret)
return answer
'practivceAlgorithm > programmers' 카테고리의 다른 글
[Programmers][Python][2021 카카오 인턴십] 표 편집 (0) | 2021.11.14 |
---|---|
[Programmers][Python] KAKAO 2018 N진수 게임 (0) | 2021.11.07 |
[Programmers][Python] KAKAO 2018 파일명 정렬 (0) | 2021.11.07 |
[Programmers][Python] KAKAO 2018 방금그곡 (0) | 2021.11.04 |
[Programmers][Python] KAKAO 2018 압축 (0) | 2021.11.04 |