🫥 문제가 어려워서 다른 사람 풀이 참고했는데 생각보다 쉬웠던 문제
import java.util.*;
class Solution {
public int[] solution(int[][] edges) {
int[] result = new int[4];
HashMap<Integer, Integer> in = new HashMap<>();
HashMap<Integer, Integer> out = new HashMap<>();
// 각 정점마다 in 간선과 out 간선 count
for(int[] edge : edges){ // a -> b
int a = edge[0];
int b = edge[1];
in.put(b, in.getOrDefault(b, 0) + 1);
out.put(a, out.getOrDefault(a, 0) + 1);
}
for(int o : out.keySet()){
if (out.get(o) >= 2){
// 생성된 정점 찾기
if (!in.containsKey(o)){
result[0] = o;
} else { // 8자 모양 그래프 찾기
result[3] += 1;
}
}
}
// 막대 모양 그래프 찾기
for(int i : in.keySet()){
if (!out.containsKey(i)) result[2] += 1;
}
result[1] = out.get(result[0]) - result[2] - result[3];
return result;
}
}