네트워크
from collections import defaultdict
def solution(n, computers):
global answer
answer=0
net={k:[] for k in range(0,n)}
for i in range(len(computers)):
for j in range(len(computers[0])):
if i!=j and computers[i][j]==1:
net[i].append(j)
visited=set()
def dfs(node):
global answer
if node in visited:
return
visited.add(node)
for next_n in net[node]:
if next_n not in visited:
dfs(next_n)
for node in net.keys():
if node in visited:
continue
answer+=1
dfs(node)
return answer
게임 맵 최단거리
from collections import deque
def solution(maps):
n,m=len(maps)-1,len(maps[0])-1
pos=[(1,0),(0,1),(-1,0),(0,-1)]
visited=[[0]*(m+1) for _ in range(n+1)]
maps[n][m]=-1
if maps[n-1][m]==0 and maps[n][m-1]==0:
return -1
routes=deque([(0,0,1)])
while routes:
x, y, cnt=routes.popleft()
for nx,ny in pos:
nx_pos, ny_pos=x+nx, y+ny
if 0<=nx_pos<=n and 0<=ny_pos<=m and maps[nx_pos][ny_pos] and visited[nx_pos][ny_pos]==0:
visited[nx_pos][ny_pos]=1
maps[nx_pos][ny_pos]=cnt+1
routes.append((nx_pos,ny_pos,cnt+1))
return maps[n][m]