https://school.programmers.co.kr/learn/courses/30/lessons/258711

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

헐..어렵다..!!

function solution(edges) {
    var [dot,dounut,bar,eight]=[0,0,0,0];
    var graph =edges.reduce((map,key)=>{
        if(!map.has(key[0])){
            map.set(key[0],[1,0])
        }else{
           const [give,receive]=map.get(key[0]);
            map.set(key[0],[give+1,receive]);       
        }
        if(!map.has(key[1])){
            map.set(key[1],[0,1])
        }else{
            const [give,receive]=map.get(key[1]);
            map.set(key[1],[give,receive+1]);
        }
       
        
        return map;
    },new Map())
   
 
    
    for(let [key, value] of graph){
        const [give,receive]=value;
        
        if(give>1&&receive==0){
            dot = key; //정점 찾기 (정점은 give>=2, receive ==0)
        }
        else if(give==0&& receive>0)bar++; //막대그래프 찾기 (최상단의 막대그래프는 give==0, receive>0)
        
        else if(give>=2&& receive>=2)eight++;
    }
    
    dounut = graph.get(dot)[0]-eight-bar; //전체 그래프 개수: 정점과 이어진 선(give) 개수
    //전체 - 막대 - 8자그래프 = 도넛그래프 개수 
    
    return [dot,dounut,bar,eight];
}

 

그림을 잘 보고 그래프마다의 특성을 찾아내야 하는구만 

 

 

 

 

 

 

참고  : https://velog.io/@naro-kim/%EA%B7%B8%EB%9E%98%ED%94%84-2024-Kakao-winter-internship-%EB%8F%84%EB%84%9B%EA%B3%BC-%EB%A7%89%EB%8C%80-%EA%B7%B8%EB%9E%98%ED%94%84-Javascript

+ Recent posts