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를 계속 사용했더니 시간초과가 발생해서 

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

+ Recent posts