728x90
function solution(bandage, health, attacks) {
    var answer = 0;
    var success = 0;
    var now = health;
    var keep = 0;
    var last_attack = attacks[attacks.length-1][0];
    var time = bandage[0];
    var heal = bandage[1];
    var bonus = bandage[2];
    
    for(let i=1; i<=last_attack; i++){
       if(i == attacks[0][0]){
            now = now - attacks[0][1]
            attacks.shift();
            keep=0;
            console.log("attack",now)
           if(now<1){
               now = -1;
               break;
           }
       }
        else{
            if(now+heal>health)
                now = health;
            else now = now+heal;
            keep++;
            
            if(time==keep){
                keep=0;
                now +bonus < health? now = now + bonus : now = health;
            }
            
        }
       
        
    }
    
    
    return now;
}

삼항연산자 쓰면 심심찮게 오타나서 계속 틀리는데도 

깔끔해보여서 자꾸 쓰게된다 헷 

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(arr){
    var stack =[]
    
    arr.forEach((a,idx)=>{
       if(stack.length==0)stack.push(a);
       else if(stack[stack.length-1]!==a)stack.push(a)
     }
   )   
    
    
    return stack;
 }

헤헷 간단한문제

728x90
function solution(numbers, target) {
    var answer = 0;
    dfs(0,0);
    
    function dfs(idx,sum){
        if(idx==numbers.length){
            if(sum==target){
                answer++;
            }
            return;
        }
        
        dfs(idx+1,sum+numbers[idx]);
        dfs(idx+1,sum-numbers[idx]);
      
    }
    return answer;
}

 

자료구조 다 까먹어서 완전 감자상태다 ............ 공부 다시 해야지 

728x90
function solution(s) {
    var cnt = 0;
    var first = 0
    var diff =0
    var firstChar = s[0]
    s.split('').forEach((ch,index)=>{
        if(ch==firstChar){ 
           first++;
        }
        else diff++;
        if(diff===first){
            diff=0;
            first=0;
            cnt++;
            firstChar=s[index+1]
        }
        if(diff!==first&&s.length-1===index) 
            cnt++;
    })
    return cnt;
}

 

 

문자열을 split을 사용해 배열로 만들어서 해결했다

728x90

+ Recent posts