알고리즘 100일 챌린지

자바스크립트 알고리즘 42 일차 (코딩도장)

martinooo 2023. 6. 5. 23:37


42일차 첫번째 문제 

문제: 1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수

난이도: 코딩테스트 문제

풀이 과정: s 배열에 값이 있고 ss는 slice 활용해서 깊은 복사로 인덱스 1부터 시작하는 새로운 메모리에

저장된 배열을 생성 s배열에 원소를 순회하면서 인덱스 1부터 시작하는 ss 배열로 각 쌍의 배열을 반환한다.

[ [1,3], [3, 4], [4, 8], ...] sort 함수를 활용해서 각 쌍의 두번째 요소와 첫번째 요소의 차이를 기준으로 오름차순으로

정렬을 하면 차이가 가장작은 쌍의 정렬된 배열로 반환이 된다. 

 

const s = [1, 3, 4, 8, 13, 17, 20]
const ss = s.slice(1)
s.map((v, i) => [v, ss[i]]).sort((a, b) => (a[1]-a[0]) - (b[1] - b[0]))[0]
답: [3, 4]

 

 

참고사항:  

slice 깊은 복사로 새로운 인덱스로 정렬된 배열을 생성한다. 

sort는 원소에 값들로 오름차순 내림차순에 정렬이 가능하다.


https://codingdojang.com/scode/408

 

 

코딩도장

프로그래밍 문제풀이를 통해서 코딩 실력을 수련

codingdojang.com