문제 설명 및 제한사항
아이디어 및 해결 방법
코드
import sys; sys.setrecursionlimit(1000000)
from collections import defaultdict
def dfs(u, A, vis):
if all(vis[v] for v in A[u]):
return
for v in A[u]:
if not vis[v]:
vis[u] = True
dfs(v, A, vis)
return
def solution(n, computers):
# CC 개수를 세는 문제.
# Adj list가 더 편해서 computers를 AdjList로 변환.
A = defaultdict(list)
for i, row in enumerate(computers):
for j, v in enumerate(row):
if computers[i][j] == 1:
A[i].append(j)
A[j].append(i)
# visited 배열을 초기화해두고
vis = [False] * n
answer = 0
for u in range(n):
if vis[u]:
continue
else:
vis[u] = True
dfs(u, A, vis)
answer += 1
return answer
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges