2차원 좌표들의 배열이 주어진다. 배열에 있는 첫 번째 좌표에서 시작하여 배열에 있는 모든 좌표를 순서대로 방문해야 한다. 1초마다 수직,수평, 또는 대각선으로 한 칸 움직일 수 있다. 모든 점을 방문한 뒤 걸린 시간을 반환하면 된다.
우선 좌표들의 배열의 최소길이가 1 이기에 배열의 길이가 1 이라면 계산을 할 필요 없이 0을 반환한다(early return).
그리고 대각선으로 움직이는 것도 1초가 걸리므로 두 좌표간 이동시간은 결국 x좌표의 간격과 y좌표의 간격 중 더 큰 값 만큼 움직여야 한다. Math.max(delta X, delta Y)
가 되는 것.
다음과 같이 작성했고 손쉽게 통과할 수 있었다.
function minTimeToVisitAllPoints(points: number[][]): number {
if (points.length === 1) {
return 0
}
let totalTime = 0
let index = 1
while(index < points.length) {
totalTime += Math.max(Math.abs(points[index][0] - points[index - 1][0]), Math.abs(points[index][1] - points[index - 1][1]))
index += 1
}
return totalTime
};