728x90

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

728x90
function solution(friends, gifts) {
    var answer = 0;
    var score = new Map();
    var log = new Map();
    
    //hash 
    for(i=0; i<friends.length;i++){
        var name = friends[i]
        score.set(name, gifts.filter((g)=>g.split(" ")[0]===name).length - gifts.filter((g)=>g.split(" ")[1]===name).length)
        log.set(name,gifts.filter(g=>g.split(" ")[0]==name).map((i)=>i.split(" ")[1]))
    }
    //hash 

    for(i=0; i<friends.length; i++){
      var name = friends[i]; 
      var numOfGift = 0;
        
      for(j = 0; j<friends.length; j++){
         
          var receiver = friends[j] 
          
          var receive = log.get(receiver).filter((f)=>f==name).length;
          var give = log.get(name).filter((f)=>f==receiver).length;
            
              if(give>receive) numOfGift++;

              else if(give===receive){
              
                  if(score.get(name)>score.get(receiver)) numOfGift++; 
            }
       
         
          if(numOfGift>answer)
              answer=numOfGift;
       
      }
        
    }
     return answer;
}

 

filter를 계속 사용했더니 시간초과가 발생해서 

해시맵을 사용해서 해결했다! 진작쓸걸 ㅎ .. 

728x90
function solution(numbers, k) {
    
    var turn =1
    var len =numbers.length
    
    for(i=1; i<k; i++){
        if(turn+2<=len)turn=turn+2;
        else turn=turn+2-len
        console.log(turn)
    }
    return turn;
}

~.~

728x90
function solution(left, right) {
    var answer = 0;
    
    for (i = left; i<=right; i++){
        var factors = 0;
        for(j=1; j<=i; j++){
            if(i%j ==0)
                factors++;
        }
        factors%2===0?answer=answer+i : answer=answer-i;
    }
    return answer;
}

 

728x90
function solution(x) { 
    
    var number = x.toString().split("").reduce((a,b)=>Number(a)+Number(b));
    
    return x % number===0? true:false;
}

 

배열로 만든 뒤 reduce를 사용했다 

728x90

 

function solution(today, terms, privacies) {
  
   var answer = [];
   const  trimToday =new Date(today)


    privacies.forEach((p,index)=>{
       var now = new Date(p.slice(0,p.length-2))
       var term = Number(terms.find((t)=>t[0]===p.slice(-1)).split(" ")[1])
       var month = now.getMonth()
       
       now.setMonth(month+term)
      
       if(now<=trimToday){
              answer.push(index+1);
           }
        
       
  
})
    
    return answer;
}

 

뭔가 지저분한 방식으로 풀었는데

나중에 다시 풀어봐야겠다 

 

.slice() 말고 split을 쓰면 훨씬 간단하게 해결할 수 있었을텐데 

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

 

구조 분해 할당 - JavaScript | MDN

구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다.

developer.mozilla.org

이거 참고해서 공부를 좀 해야겠다 

 

 

 

728x90

+ Recent posts