Minimize rooms with K seats to accommodate N girls and M boys
Given three positive integers N, M, and K, the task is to find the minimum number of rooms required to accommodate all students if there are N girls and M boys, and each room has K seats. It is not allowed for a boy and a girl to stay in the same room.
Examples:
Input: N = 13, M = 7, K = 2
Output: 11
Explanation: Room required for girls = 7 (2 + 2 + 2 + 2 + 2 + 2 + 1) Room required for boys = 4 (2 + 2 + 2 + 1)Input: N = 5, M = 5, K = 3
Output: 4
Explanation: Rooms required for girls = 2 (3 + 2) Room required for boys = 2 (3 + 2). So, we output total seats 2 + 2 = 4
Approach: This can be solved with the following idea:
This can be solved by mathematical observation. Calculating rooms required for boys and girls separately.
Steps involved in the implementation of code:
- If the number of students in a particular gender is exactly divisible by the number of seats in a room, then the number of rooms required for that gender can be calculated as the integer division of the number of students in that gender by the number of seats in a room.
- If the number of students in a particular gender is not exactly divisible by the number of seats in a room, then the number of rooms required for that gender can be calculated as the integer division of the number of students in that gender by the number of seats in a room, plus one. This is because an additional room is required to accommodate the remaining students.
- Steps 1 and 2 can be applied separately for boys and girls to calculate the minimum number of rooms required for each gender.
- The minimum number of rooms required to accommodate all students can be calculated as the maximum of the minimum number of rooms required for boys and girls, i.e., answer = max(ceil(M/K), ceil(N/K)).
- Finally, return the answer as the minimum number of rooms required to accommodate all students.
Below is the implementation of the code:
C++14
// C++ Implementation #include <iostream> using namespace std; // Function to calculate rooms required int totalRooms( int n, int m, int k) { int count = 0; // For girls count += (n / k); // Extra space required if (n % k != 0) { count++; } // For boys count += (m / k); // Extra space required if (m % k != 0) { count++; } return count; } // Driver code int main() { int n = 13; int m = 7; int k = 2; // Function call cout << totalRooms(n, m, k); return 0; } |
Java
import java.util.*; class Main { public static void main(String[] args) { int n = 13 ; int m = 7 ; int k = 2 ; // Function to calculate rooms required int count = 0 ; // For girls count += (n / k); // Extra space required if (n % k != 0 ) { count++; } // For boys count += (m / k); // Extra space required if (m % k != 0 ) { count++; } // Print the total number of rooms required System.out.println(count); } } |
Python
n = 13 # n=girl m = 7 # m=boy k = 2 # k=number of seats in each room count = 0 # declearing count variable ''' Checking for girls ''' count + = (n / / k) if (n % k ! = 0 ): count + = 1 ''' Checking for boys ''' count + = (m / / k) if (m % k ! = 0 ): count + = 1 print (count) # print the count |
C#
// C# Implementation using System; public class GFG { public static void Main() { int n = 13; int m = 7; int k = 2; // Function to calculate rooms required int count = 0; // For girls count += (n / k); // Extra space required if (n % k != 0) { count++; } // For boys count += (m / k); // Extra space required if (m % k != 0) { count++; } // Print the total number of rooms required Console.WriteLine(count); } } // This code is contributed by Pushpesh Raj |
Javascript
function totalRooms(n, m, k) { let count = 0; // For girls count += Math.floor(n / k); // Extra space required if (n % k !== 0) { count++; } // For boys count += Math.floor(m / k); // Extra space required if (m % k !== 0) { count++; } return count; } // Driver code const n = 13; const m = 7; const k = 2; // Function call console.log(totalRooms(n, m, k)); |
11
Time Complexity: O(1)
Auxiliary Space: O(1)