1ilsang

Developer who will be a Legend

LeetCode 1266. Minimum Time Visiting All Points

2019-12-02 1ilsangProblem Solving

Problem

이 문제는 좌표를 따라가면 복잡해지는 문제다. 좌표를 직접 움직이는 것이 아닌 절대값을 구해 그 차들의 큰 값들만 더해주면 쉽게 풀 수 있는 문제다.

문제의 예를 들자면, [1, 1] -> [3, 4] -> [-1, 0] 에서 각각의 절대값을 구하면 [2, 3], [4, 4] 가 된다.(1 - 3, 1 - 4 …) 여기서 포인트는 상화좌우대각선 어떤 방향으로 움직이든 절대값의 최대만큼은 움직여야만 한다는 뜻이다.(2,3 이면 대각선 2번 움직이고 위로 한 칸 움직여야 하므로 무조건 3번이다) 그러므로 절대값만 더해가며 답을 출력해주면 그게 정답이 된다.

/**
 * @param {number[][]} points
 * @return {number}
 */
const minTimeToVisitAllPoints = (points) => {
    let answer = 0;
    const cur = {
        x: points[0][0],
        y: points[0][1]
    };

    for(let i = 1; i < points.length; i++) {
        const [ nx, ny ] = points[i];
        const [ absx, absy ] = [ Math.abs(cur.x - nx), Math.abs(cur.y - ny) ];
        answer += Math.max(absx, absy);
        cur.x = nx;
        cur.y = ny;
    }
    
    return answer;
};

이지 문제였다.

그럼 이만!