https://leetcode.com/problems/minimum-number-of-moves-to-seat-everyone/
모두의 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();
}
'Algorithm > LeetCode' 카테고리의 다른 글
2418. Sort the People (0) | 2023.03.31 |
---|---|
1913. Maximum Product Difference Between Two Pairs (0) | 2023.03.31 |
1859. Sorting the Sentence (0) | 2023.03.31 |
2160. Minimum Sum of Four Digit Number After Splitting Digits (0) | 2023.03.31 |
2413. Smallest Even Multiple (0) | 2023.03.31 |