diff --git a/mjj111/DonutWithGraph.java b/mjj111/DonutWithGraph.java deleted file mode 100644 index dea4196..0000000 --- a/mjj111/DonutWithGraph.java +++ /dev/null @@ -1,78 +0,0 @@ -// 3시 13분 시작 3시 54분 완료 약 40분 소요 -// 정점 도넛 막대 8자 그래프 반환 -// 정점 개수 100만개 -import java.util.*; -class DonutWithGraph { - public int[] solution(int[][] edges) { - Map nodes = new HashMap<>(); - - for(int[] edge : edges) { - int start = edge[0]; - int end = edge[1]; - - Node startNode; - if(!nodes.containsKey(start)) { - nodes.put(start, new Node(0,0)); - } - startNode = nodes.get(start); - - Node endNode; - if(!nodes.containsKey(end)) { - nodes.put(end, new Node(0,0)); - } - endNode = nodes.get(end); - - endNode.indegree++; - startNode.next++; - startNode.nexts.add(end); - } - - int middleNodeIndex = 0; - int total = 0; - int eight = 0; - int line = 0; - int donut = 0; - int wannaRemove = 0; - for(Integer nodeIndex : nodes.keySet()) { - Node now = nodes.get(nodeIndex); - if(now.indegree == 0 && now.next >= 2) { - middleNodeIndex = nodeIndex; - total = now.next; - - wannaRemove = nodeIndex; - - for(int next : now.nexts) { - nodes.get(next).indegree--; - } - } - } - nodes.remove(wannaRemove); - - for(int nodeIndex : nodes.keySet()) { - Node now = nodes.get(nodeIndex); - if(now.indegree == 0) { - line++; - } - if(now.indegree == 2 && now.next == 2) { - eight++; - } - } - - donut = total - eight - line; - // 정점 도넛 막대 8자 그래프 반환 - int[] answer = new int[]{middleNodeIndex,donut, line, eight}; - return answer; - } - - class Node { - int indegree; - int next; - ArrayList nexts = new ArrayList<>(); - - Node(int indegree, int next) { - this.indegree = indegree; - this.next = next; - } - } -} -