프로그래머스 #2

해시 - 완주하지 못한 선수

해시는 사실 처음 들어봤다
그냥 요령없이 풀어봤다

function solution(participant, completion) {
    while(completion.length > 0){
        const head = completion.shift();
        const idx = participant.indexOf(head);
        
        participant.splice(idx,1)
    }
    
    return participant[0];
}


ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
반복문 내에 indexOf나 splice 메소드를 사용하면서 시간복잡도가 늘어난 듯 하다.

function solution(participant, completion) {
    const obj = {};
    
    completion.forEach(el=>{
      if(el in obj){
        obj[el]++;
      } else {
        obj[el] = 1;               
      }
    });
    
    for(let el of participant){
      if(obj[el]){
        if(obj[el] !== 0){
          obj[el]--;
        } else {
          return el;
        }
      } else {
        return el;
      }
    }
}

배열을 조회하는 시간복잡도를 줄이기 위해 객체 키값을 통해 조회하도록 작성해보았다

다른 사람들 풀이를 보니 머리가 띵~하다 ㅋㅋㅋㅋ 정말 다양한 방법이 있구나..

좋은 웹페이지 즐겨찾기