findUniqueNum.js

Codewars 알고리즘 풀이


Problem

  • There is an array with some numbers.
    • 몇 개의 숫자가 있는 배열이 주어진다.
  • All numbers are equal except for one.
    • 하나를 제외한 모든 숫자는 동일하다.
  • Try to find it.
    • 동일하지 않은 숫자를 반환한다.
  • It’s guaranteed that array contains at least 3 numbers.
    • 배열에는 3개 이상의 숫자가 포함되어 있다.



Solution 01

function findUniqueNum(arr) {
  let sortArr = arr.sort((a, b) => a - b);
  
  for (let i = 0; i < arr.length; i++) {
    if (sortArr[i] !== sortArr[i + 1]) {
      return sortArr[i];
    } else {
      return sortArr[sortArr.length - 1];
    }
  }
}

findUniqueNum([0, 0, 4]);     // 4
findUniqueNum([0, 2, 0]);     // 2
findUniqueNum([9, 0, 0]);     // 9
findUniqueNum([0, 0, 4, 0]);  // 4


Solution 02

function findUniqueNum(arr) {
  arr = arr.sort((a, b) => a - b);
  return arr[0] === arr[1] ? arr.pop() : arr[0];
}

findUniqueNum([0, 0, 4]);     // 4
findUniqueNum([0, 2, 0]);     // 2
findUniqueNum([9, 0, 0]);     // 9
findUniqueNum([0, 0, 4, 0]);  // 4


Solution 03

function findUniqueNum(arr) {
  return arr.find(i => arr.indexOf(i) === arr.lastIndexOf(i));
}

findUniqueNum([0, 0, 4]);     // 4
findUniqueNum([0, 2, 0]);     // 2
findUniqueNum([9, 0, 0]);     // 9
findUniqueNum([0, 0, 4, 0]);  // 4


Solution 04

function findUniqueNum(arr) {
  return arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i))[0];
}

findUniqueNum([0, 0, 4]);     // 4
findUniqueNum([0, 2, 0]);     // 2
findUniqueNum([9, 0, 0]);     // 9
findUniqueNum([0, 0, 4, 0]);  // 4


Solution 05

function findUniqueNum(arr) {
  return +arr.filter(i => arr.indexOf(i) === arr.lastIndexOf(i));
}

findUniqueNum([0, 0, 4]);     // 4
findUniqueNum([0, 2, 0]);     // 2
findUniqueNum([9, 0, 0]);     // 9
findUniqueNum([0, 0, 4, 0]);  // 4