Algorithm/LeetCode

2037. Minimum Number of Moves to Seat Everyone

 

https://leetcode.com/problems/minimum-number-of-moves-to-seat-everyone/

 

Minimum Number of Moves to Seat Everyone - LeetCode

Can you solve this real interview question? Minimum Number of Moves to Seat Everyone - There are n seats and n students in a room. You are given an array seats of length n, where seats[i] is the position of the ith seat. You are also given the array studen

leetcode.com

 

모두의 Seat를 최소한으로 움직이는 수를 구하라.

한 방에 n개의 좌석과 n명의 학생이 있습니다. 길이가 n인 좌석 배열이 주어집니다.
여기서 seats[i]는 i번째 좌석의 위치입니다. 길이가 n인 Students 배열도 제공됩니다.
여기서 Students[j]는 j번째 학생의 위치입니다. 다음 이동을 여러 번 수행할 수 있습니다.
i번째 학생의 위치를 ​​1씩 늘리거나 줄입니다(즉, i번째 학생을 위치 x에서 x + 1 또는 x - 1로 이동).
두 명의 학생이 같은 좌석에 있지 않도록 각 학생을 좌석으로 이동하는 데 필요한 최소 이동 횟수를 반환합니다.
처음에는 같은 위치에 여러 자리나 학생이 있을 수 있습니다.

나의 풀이

import java.util.Arrays;
import java.lang.Math;
class Solution {
    public int minMovesToSeat(int[] seats, int[] students) {
        int result = 0;
        Arrays.sort(seats);
        Arrays.sort(students);
        for(int idx = 0; idx < seats.length; idx++) {
            result += Math.abs(seats[idx] - students[idx]);
        }
        return result;
    }
}

 

stream활용

public int minMovesToSeat(int[] seats, int[] students) {
      Arrays.sort(seats);
      Arrays.sort(students);
      return IntStream.range(0, seats.length).map(i -> Math.abs(seats[i] - students[i])).sum();
}