Stack/Coding test
[C# / Lv3] 네트워크 (프로그래머스 연습문제)
Seo_re:
2022. 10. 10. 22:11
반응형
풀이 코드
using System;
using System.Collections.Generic;
public class Solution {
private HashSet<int> m_visited = new HashSet<int>();
public int solution(int n, int[,] computers) {
int answer = 0;
for(int i = 0; i < n; i++)
{
if(!m_visited.Contains(i))
{
answer++;
DFS(computers, i);
}
}
return answer;
}
private void DFS(int[,] computers, int currentIndex)
{
m_visited.Add(currentIndex);
for(int i = 0; i < computers.GetLength(0); i++)
{
if(m_visited.Contains(i) || currentIndex == i ||
computers[currentIndex, i] == 0)
{
continue;
}
DFS(computers, i);
}
}
}
- 재귀함수를 이용하여 DFS를 구현하였다. (Stack 및 반복문을 이용하는 방법도 있지만, 코드가 복잡하게 보일까봐 재귀함수로 작성)
기타
- 그래프를 평소에 다루어 보지 않아서 한참을 헤맸다. (통과는 됐지만 이게 진짜 문제에서 요구하는게 맞는지 헷갈림)
반응형