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]]
'JAVASCRIPT > 자바스크립트 알고리즘' 카테고리의 다른 글
자바스크립트 '요일 구하기' (0) | 2020.10.31 |
---|---|
자바스크립트 '특별한 정렬' (2) | 2020.10.30 |
자바스크립트 '평균 구하기' (0) | 2020.10.30 |
자바스크립트 '배열에서 특정 값만을 구하기' (0) | 2020.10.30 |
자바스크립트 '배열의 인접한 요소곱 중 가장 큰 값 구하기' (0) | 2020.10.30 |