주요 조건들을 체크하자.
- 맨해튼 거리가 2이하이면 탈락
- 테이블도 이동에 포함
- 파티션은 이동에 포함하지 않음
bfs로 접근.
from collections import deque
def bfs(place):
start = []
d = (1,0),(-1,0),(0,1),(0,-1)
for i in range(5):
for j in range(5):
if place[i][j] == 'P':
start.append((i,j))
q = deque()
visited = [[False] * 5 for _ in range(5)]
for s in start:
q.append((s[0], s[1], 0))
visited[s[0]][s[1]] = True
while q:
x, y, dist = q.popleft()
for dx, dy in d:
nx, ny = x + dx, y + dy
if 0 <= nx < 5 and 0 <= ny < 5 and not visited[nx][ny]:
if place[nx][ny] == 'O':
visited[nx][ny] = 1
q.append((nx, ny, dist + 1))
if place[nx][ny] == 'P' and dist <= 1:
return 0
return 1
def solution(places) :
answer = []
for place in places:
answer.append(bfs(place))
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2022 KAKAO TECH INTERNSHIP | 두 큐 합 같게 만들기 (0) | 2022.09.03 |
---|---|
[2021 KAKAO BLIND RECURITMENT] 메뉴 리뉴얼 (0) | 2022.05.07 |
[Summer/Winter Coding(~2018)] 지형 편집 (1) | 2022.02.20 |
[2022 KAKAO BLIND RECRUITMENT] 양과 늑대 (0) | 2022.02.19 |
[2021 카카오 채용연계형 인턴쉽] 표 편집 (0) | 2022.02.17 |