[Codility-training][JS] FirstUnique

차유림·2021년 7월 20일
0

codility

목록 보기
2/2

문제

[4, 10, 5, 4, 2, 10] 배열이 주어졌을 때,
중복되어 나온 숫자를 제외하고, 가장 첫 번째 숫자를 반환하는 문제이다.

예시에서는 4, 10이 중복된 숫자고, 한 번만 나온 unique 숫자는 5, 2인데
그 중 첫번째인 5를 반환하면 된다.

문제풀이

처음에는 obj 객체를 만들어 값들이 몇 번 나왔는지를 체크했는데,
값이 이미 obj객체에 있을 경우, value값은 아무 값이나 저장하면 된다.
필요한 것은 1번만 나온 값이기 때문이다.

function solution(A) {
  const obj = {};

  for (let i = 0; i < A.length; i++) {
    obj[A[i]] = A[i] in obj ? [0, 0] : [1, i, A[i]];
  }

  const unique = Object.values(obj).filter(v => v[0] === 1);

  if (unique.length === 0) return -1;

  return unique.sort((a, b) => a[1] - b[1])[0][2];
}
profile
🎨프론트엔드 개발자💻

0개의 댓글