[LeetCode] Minimum Time Visiting All Points

아르당·2026년 4월 14일

LeetCode

목록 보기
261/303
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

2D 평면에 정수 좌표 points[i] = [xi, yi]를 가진 n개의 점이 있다. points에 주어진 순서대로 모든 점을 방문하는데 걸리는 최소 시간을 초 단위로 반환해라.

아래 규칙에 따라 이동할 수 있다.

  • 1초에 할 수 있는 것들
    • 수직으로 1칸 옮긴다.
    • 수평으로 1칸 옮긴다.
    • 대각으로 sqrt(2) 옮긴다(1초에 수직, 수평 1칸씩 옮긴다).
  • 배열에 나타난 순서대로 지점들을 방문해야 한다.
  • 순서에서 나중에 나타나는 지점을 통과하는 것은 허용되지만, 방문 횟수에 포함되지 않는다.

Example

#1

Input: points = [[1, 1], [3, 4], [-1, 0]]
Output: 7
Explanation: 하나의 최적인 경로는 [1, 1] -> [2, 2] -> [3, 3] -> [3, 4] -> [2, 3] -> [1, 2] -> [0, 1] -> [-1, 0]이다.
[1, 1]에서 [3, 4]까지 3초가 걸린다.
[3, 4]에서 [-1, 0]까지 4초가 걸린다.
총 시간은 7초이다.

#2
Input: points = [[3, 2], [-2, 2]]
Output: 5

Constraints

  • points.length == n
  • 1 <= n <= 100
  • points[i].length == 2
  • -1000 <= points[i][0], points[i][1] <= 1000

Solved

class Solution {
    public int minTimeToVisitAllPoints(int[][] points) {
        int result = 0;

        for(int i = 1; i < points.length; i++){
            result += Math.max(
                Math.abs(points[i][0] - points[i - 1][0]),
                Math.abs(points[i][1] - points[i - 1][1])
            );
        }

        return result;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글