mergeArrays.js (8kyu 79)

Codewars 알고리즘 풀이


Problem

  • You are given two sorted arrays that contain only integers.
    • 정수만 포함된 두 개의 정렬된 배열이 주어진다.
  • Your task is to find a way to merge them into a single one, sorted in ascending order.
    • 오름차순으로 정렬된 하나의 배열로 병합한다.
  • Remove duplicated in the returned result.
    • 반환된 결과에서는 중복을 제거한다.


Solution 01

function mergeArrays(arr1, arr2) {
  let arr = arr1.concat(arr2).sort((a, b) => a - b);
  let result = [];
  
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== arr[i + 1]) {
      result.push(arr[i]);
    }
  }
  return result;
}

mergeArrays([1, 2, 3], [1, 2, 4]);  // [1, 2, 3, 4]
mergeArrays([1, 3, 5], [2, 4, 6]);  // [1, 2, 3, 4, 5, 6]
mergeArrays([2, 1], [-1, 0, -2]);   // [-2, -1, 0, 1, 2]

concat() 메소드

두 개 이상의 배열을 결합하고, 새 배열을 반환한다.

sort() 메소드

배열의 element를 정렬한 후, 그 배열을 반환한다.

push() 메소드

배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.


Solution 02

function mergeArrays(arr1, arr2) {
  let arr = [...arr1, ...arr2].sort((a, b) => a - b);
  let result = [];
  
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== arr[i + 1]) {
      result.push(arr[i]);
    }
  }
  return result;
}

mergeArrays([1, 2, 3], [1, 2, 4]);  // [1, 2, 3, 4]
mergeArrays([1, 3, 5], [2, 4, 6]);  // [1, 2, 3, 4, 5, 6]
mergeArrays([2, 1], [-1, 0, -2]);   // [-2, -1, 0, 1, 2]


Solution 03

function mergeArrays(arr1, arr2) {
  let arr = [...arr1, ...arr2].sort((a, b) => a - b);
  
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === arr[i + 1]) {
      arr.splice(i, 1);
    }
  }
  return arr;
}

mergeArrays([1, 2, 3], [1, 2, 4]);  // [1, 2, 3, 4]
mergeArrays([1, 3, 5], [2, 4, 6]);  // [1, 2, 3, 4, 5, 6]
mergeArrays([2, 1], [-1, 0, -2]);   // [-2, -1, 0, 1, 2]

splice() 메소드

배열에 item을 추가/제거한 후, 제거된 item을 반환한다.


Solution 04

function mergeArrays(arr1, arr2) {
  return [...new Set(arr1.concat(arr2))].sort((a, b) => a - b);
}

mergeArrays([1, 2, 3], [1, 2, 4]);  // [1, 2, 3, 4]
mergeArrays([1, 3, 5], [2, 4, 6]);  // [1, 2, 3, 4, 5, 6]
mergeArrays([2, 1], [-1, 0, -2]);   // [-2, -1, 0, 1, 2]