넘치게 채우기

[LeetCode] 2037. Minimum Number of Moves to Seat Everyone 본문

PS/LeetCode

[LeetCode] 2037. Minimum Number of Moves to Seat Everyone

riveroverflow 2024. 6. 13. 10:55
728x90
반응형

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

leetcode - Minimum Number of Moves to Seat Everyone

문제 유형 : 정렬, 그리디

문제 난이도 : Easy

 

문제

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 students of length n, where students[j] is the position of the jth student.

You may perform the following move any number of times:

  • Increase or decrease the position of the ith student by 1 (i.e., moving the ith student from position x to x + 1 or x - 1)

Return the minimum number of moves required to move each student to a seat such that no two students are in the same seat.

Note that there may be multiple seats or students in the same position at the beginning.

 

n개의 좌석과 n명의 학생이 있습니다.

seats[i]는 i번째 좌석의 위치, students[i]는 i번째 학생의 위치입니다.

 

학생들의 위치를 조정하여 모두 seats에 있도록 만들기 위한 최소 이동 횟수를 구하시오.

이동횟수는 한번에 1씩 좌우로 가능합니다.

 

풀이

seats와 students모두 정렬해주고, 같은 인덱스의 숫자들의 절대값 차를 구하면 된다.

 

코드

C++

class Solution {
public:
    int minMovesToSeat(vector<int>& seats, vector<int>& students) {
        sort(seats.begin(), seats.end());
        sort(students.begin(), students.end());

        int n = seats.size();
        int ans = 0;
        for(int i = 0; i < n; i++) {
            ans += abs(seats[i] - students[i]);
        }

        return ans;
    }
};
728x90
반응형

'PS > LeetCode' 카테고리의 다른 글

[LeetCode] 502. IPO  (0) 2024.06.15
[LeetCode] 945. Minimum Increment to Make Array Unique  (0) 2024.06.14
[LeetCode] 75. Sort Colors  (0) 2024.06.12
[LeetCode] 1122. Relative Sort Array  (0) 2024.06.11
[LeetCode] 1051. Height Checker  (0) 2024.06.10