A group of friends is going on holiday together codility problem
A group of friends is going on holiday together. They have come to a meeting point 
(the start of the journey) using N cars. There are P[K] people and S[K] seats in the K-th 
car for K in range [O..N-1). Some of the seats in the cars may be free, so it is possible
for some of the friends to change the car they are in. The friends have decided that,
in order to be ecological, they will leave some cars parked at the meeting point and 
travel with as few cars as possible. 

Write a function: 
	class Solution {
		public int solution(int[] P, int[] S); 
	} 
	
that, given two arrays P and S, consisting of N integers each, returns the minimum number 
of cars needed to take all of the friends on holiday. 

# Examples: 
1. Given P = [1, 4, 1] and S = [1, 5, 11], the function should return 2. A person from car 
number 0 can travel in car number 1 instead. This way, car number 0 can be left parked at the meeting point. 
2. Given P = [4, 4, 2, 4] and S = [5, 5, 2, 5], the function should return 3. One person 
from car number 2 can travel in car number 0 and other person from car number 2 can travel in car number
3. Given P = [2, 3, 4, 2] and S = [2, 5, 7, 2], the function should return 2. Passengers 
from car number 0 can travel in car number 1 and passengers from car number 3 can travel in car number 2. 
 
Write an efficient algorithm for the following assumptions:
	• N is an integer within the range (1..100,000); 
	• each element of arrays P and S is an integer within the range [1..9]; 
	• every friend had a seat in the car they came in; that is, P[K] < S[K] for each K within the range [0..N-1].
# Python Solution

def solution(P, S):
    total_pass = sum(P)
    res = 0
    S.sort(reverse=True)
    for i in S:
        if total_pass - i > 0:
            total_pass = total_pass - i
            res += 1
        else:
            res += 1
            return res
Comments (3)