꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

JAVASCRIPT/자바스크립트 알고리즘

자바스크립트 '최단 거리 1차원 점의 쌍 구하기 (DAUM)'

gold_dragon 2020. 10. 30. 11:40

1차원의 점들이 주어졌을 때, 그중 가장 거리가 짧은 것(들)의 쌍을 배열로 반환하는 함수를 작성하라. (단 점들의 배열은 모두 정렬되어있다고 가정한다.) 예를 들어 [1, 3, 4, 8, 13, 17, 20, 23, 24]이 주어졌다면, 결괏값은 [[3, 4], [23, 24]]가 될 것이다.

function findMinDistance(array){

}

// 1차원 점의 배열
var array = [1, 3, 4, 8, 13, 17, 20, 23, 24];
console.log(findMinDistance(array)); // [[3, 4], [23, 24]]

 

풀이

function findMinDistance(array) {
  let result = [];
  let min = Number.MAX_VALUE;

  for (let i = 0; i < array.length - 1; i++) {
    if (array[i + 1] - array[i] === min) {
      result = [...result, [array[i], array[i + 1]]];
    } else if (array[i + 1] - array[i] < min) {
      min = array[i + 1] - array[i];
      result = [[array[i], array[i + 1]]];
    }
  }

  return result;
}

const array = [1, 3, 4, 8, 13, 17, 20, 23, 24];
console.log(findMinDistance(array)); // [[3, 4], [23, 24]]
function findMinDistance(array) {
  const result = [];
  const decList = [];

  for (let i = 0; i < array.length - 1; i++) {
    decList.push(array[i + 1] - array[i]);
  }

  const min = Math.min(...decList);

  for (let i = 0; i < array.length - 1; i++) {
    if (array[i + 1] - array[i] === min) {
      result.push([array[i], array[i + 1]]);
    }
  }

  return result;
}

const array = [1, 3, 4, 8, 13, 17, 20, 23, 24];
console.log(findMinDistance(array)); // [[3, 4], [23, 24]]