[Leetcode] 1266. Minimum Time Visiting All Points

RexiaN·2025년 9월 8일
0

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
};

profile
Don't forget Rule No.1

0개의 댓글