자바스크립트 알고리즘 문제/프로그래머스
[프로그래머스] 도넛과 막대 그래프(Lv.2) - 알고리즘
이승재(Frontend Developer)
2024. 3. 28. 23:41
💡 도넛과 막대 그래프
문제 보기
https://school.programmers.co.kr/learn/courses/30/lessons/258711
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(edges) {
var answer = new Array(4).fill(0);
const graph = new Map()
edges.forEach(([from,to])=>{
if(!graph.has(from)){
graph.set(from,[0,0])
}
if(!graph.has(to)){
graph.set(to,[0,0])
}
graph.get(from)[0]++
graph.get(to)[1]++
})
let total =0
for(let key of graph.keys()){
if(graph.get(key)[0] >=2 && graph.get(key)[1]===0){
answer[0] =key
total = graph.get(key)[0]
break
}
}
edges.forEach(([from,to])=>{
if(from===answer[0]){
graph.get(to)[1]--
}
})
for(let key of graph.keys()){
if(graph.get(key)[0]===0 && graph.get(key)[1]>=0){
answer[2]++
}
else if(graph.get(key)[0]==2 && graph.get(key)[1]==2){
answer[3]++
}
}
answer[1]=total - answer[2]-answer[3]
return answer;
}