Leetcode Java Minimum Number of Vertices to Reach All Nodes
업데이트:
문제
코드
class Solution {
public List<Integer> findSmallestSetOfVertices(int n, List<List<Integer>> edges) {
boolean[] visited = new boolean[n];
for (List<Integer> edge : edges) {
visited[edge.get(1)] = true;
}
List<Integer> result = new ArrayList<>();
for (int i = 0; i < n; i++) {
if (!visited[i]) {
result.add(i);
}
}
return result;
}
}
결과
설명
- n개의 꼭짓점이 존재하는 비순환 그래프인 edges를 이용하여 아래의 조건을 만족하면서 그래프의 모든 노드에 도달할 수 있는 가장 작은 수의 시작 노드를 찾는 문제이다.
- edges[i] = [fromi, toi]로, fromi 노드에서 toi로 이동할 수 있음을 나타낸다.
- 문제 풀이에 필요한 변수를 정의한다.
- visited는 노드의 방문 여부를 저장하기 위한 변수로, n 크기의 부울 배열로 정의하고 edges를 이용하여 도착 노드의 번호에 true를 넣어준다.
- result는 시작 노드를 저장할 변수로, ArrayList로 초기화하고 0부터 n 미만까지 반복하여 도착 노드가 없는 노드들을 넣어준다.
- 반복이 완료되면 가장 작은 수의 시작 노드들이 저장된 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기