Task description

주어진 수열에서 누락된 가장 작은 양의 정수 찾기

  • 주어진 배열은 중복이 가능하고 음수도 포함되어 있다.

How I did solve

전에는 양의 정수, 고유값들로 주어진 순열 중 누락분을 구하는 문제였어서 합을 통해 풀었으나, 이번에는 일단 중복이 발생되어 있고 음수도 끼어 있어서 hashmap을 이용해서 풀어보기로 했고 의외로 금방 풀어냈음.

Solved Code

function solution(A) {
  const hashMap = {};
  A = A.sort( (a,b) => a - b);  
  A.forEach( item => {
    if( item > 0) hashMap[item] = item;
  });

  for(let i = 0; ++i < Number.MAX_SAFE_INTEGER;) {
    if( !hashMap.hasOwnProperty(i) ) {
      return i;
    }
  }
}

Retrospective

  • 비슷한 문제를 풀어본 경허이 있으니 어렵지 않게 해결.
  • 위와 같이 풀어보고 나서 new Set을 이용해서 중복을 제거하여 iterable을 순회해 봤는데 오히려 아주 살짝 느린 결과가 나오더라... ㅎㅎ