[ALGORITHM NINJA] 해시 1번 완주하지 못한 선수

NinjaJuunzzi·2021년 5월 19일
0

내 코드

 participant.sort();
  completion.sort();
  for (let check = 0; check < completion.length; check++) {
    if (participant[check] !== completion[check]) {
      answer = participant[check];
      break;
    }
  }
  • 우선 두개의 배열을 소트한다. 그럼 양 쪽 다 같은 순서로 사람들의 이름이 놓이게 된다.

  • for문으로 방을 하나하나 점검하면서 서로의 이름이 일치하지 않는 방이 있는지 체크한다.

  • 서로의 이름이 일치하지 않는다면 완주하지 못한 사람이므로 return한다.

해시로 풀기

     completion.forEach((item) => {
    completion[item] = completion[item] ? completion[item] +1 : 1;
  });

  participant.forEach((item) => {
    if (completion[item]>0) {
      completion[item]--;
    } else {
      answer = item;
    }
  });
  • 우선 완주자 배열의 이름을 키로 매핑한다. 그럼 다음과 같은 형태로 매핑된다.
{
 "mislav":1, 
 "asdas":1,
  "jun":1
}
  • 완주자 배열의 이름을 키값으로 1의 밸류 값을 주었으니,

  • 참여자 배열을 순회하면서 참여자 이름으로 해당 해쉬의 밸류값들을 조회한다.

  • 만약 값이 0보다 크더라면 완주자에 있던 이름이므로 -1해준다

  • 만약 값이 0이하라면 완주자에는 없던 이름이므로 return해준다.

  • 만약 값이 undefined라면 완주자에는 없던 이름이므로 return해준다.

profile
Frontend Ninja

0개의 댓글