1from collections import deque
2
3vx = [0, 0, -1, 1]
4vy = [-1, 1, 0, 0]
5
6def solution(maps):
7 N = len(maps)
8 M = len(maps[0])
9 answer = []
10
11 visited = [[False]*M for _ in range(N)]
12
13 for i in range(N):
14 for j in range(M):
15 if maps[i][j] != 'X' and not visited[i][j]:
16 cnt = 0
17 q = deque()
18 q.append((j, i))
19 visited[i][j] = True
20 while q:
21 cx, cy = q.popleft()
22 cnt += int(maps[cy][cx])
23 for k in range(4):
24 nx = cx + vx[k]
25 ny = cy + vy[k]
26 if 0 <= nx < M and 0 <= ny < N and maps[ny][nx] != 'X' and not visited[ny][nx]:
27 q.append((nx, ny))
28 visited[ny][nx] = True
29 answer.append(cnt)
30 if len(answer) == 0:
31 return [-1]
32 return sorted(answer)
문제
- 문자열 배열 maps가 주어진다
- 바다는 ‘X’, 섬은 숫자로 표현되는데, 숫자는 섬에서 최대한 보낼수 있는 날짜 수이다
- 각 섬에서 최대한 며칠씩 머무를 수 있는지 오름차순으로 정렬해서 반환하라
- 없다면 -1을 배열에 담아 반환하라
- TC
- input
[“X591X”,“X1X5X”,“X231X”, “1XXX1”]
- ouput
[1, 1, 27]
- input
해결방법
- BFS로 간단하게 풀었다