코딩테스트 연습 - 무인도 여행 | 프로그래머스 스쿨 (programmers.co.kr)
코드
from collections import deque
def solution(maps):
N, M = len(maps), len(maps[0])
visited = [[0] * M for _ in range(N)]
queue = deque()
answer = []
for i in range(N):
for j in range(M):
if maps[i][j] =='X' or visited[i][j]:
continue
queue.append((i,j))
visited[i][j]=1
n_food = int(maps[i][j])
while queue:
i0, j0 = queue.popleft()
for di, dj in [(1,0), (0,1), (-1,0), (0,-1)]:
ni, nj = i0+di, j0+dj
if 0<=ni<N and 0<=nj<M and not visited[ni][nj] and maps[ni][nj]!='X':
queue.append((ni, nj))
visited[ni][nj] = 1
n_food += int(maps[ni][nj])
answer.append(n_food)
if not answer:
answer.append(-1)
else:
answer.sort()
return answer
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 2단계 / 수식 최대 / python / 2020 카카오 인턴십 (0) | 2024.07.29 |
---|---|
Programmers / 3단계 / 가장 먼 노드 / python (0) | 2024.07.26 |
Programmers / 3단계 / 섬 연결하기 / python / Greedy / Kruskal 알고리즘 (0) | 2024.07.13 |
Programmers / 3단계 / 징검다리 건너기 / python / 2019 카카오 개발자 겨울 인턴십 (0) | 2024.05.24 |
Programmers / 2단계 / 방금그곡 / python / 2018 KAKAO BLIND RECRUITMENT (0) | 2024.05.22 |