https://school.programmers.co.kr/learn/courses/30/lessons/43162
def solution(n,computers):
answer=0
visited=[0 for i in range(len(computers))]
def DFS(i):
visited[i]=1
for a in range(n):
#i와 a가 연결되어있다고 했을때 a를 아직 방문하지 않은 경우
if computers[i][a] and not visited[a]:
DFS(a)
for i in range(n):
if not visited[i]:
DFS(i)
answer+=1
return answer
from collections import deque
def solution(n, computers):
answer = 0
visited = [False] * n
def bfs(start, visited, computers):
visited[start] = True
queue = deque([start])
while queue:
v = queue.popleft()
for i in range(n):
# 방문하지 않은 연결된 컴퓨터
if computers[v][i] == 1 and not visited[i]:
visited[i] = True
queue.append(i)
# 방문하지 않은 컴퓨터 중 작은 번호부터 BFS 수행
for i in range(n):
if not visited[i]:
bfs(i, visited, computers)
answer += 1
return answer
핵심포인트
✅ DFS와 BFS는 큰 틀이 어차피 같기때문에 그 틀을 외워놓자!
'코테 준비 > 프로그래머스' 카테고리의 다른 글
[level 3] 여행경로 (0) | 2023.11.05 |
---|---|
[level 2] 단어변환 (0) | 2023.11.05 |
[level 2] 타겟넘버 (0) | 2023.09.30 |
[SQL_JOIN] (0) | 2023.06.13 |
[SQL_IS NULL] (0) | 2023.06.13 |