Hackerrank - Angry Professor Solution
A Discrete Mathematics professor has a class of students. Frustrated with their lack of discipline, he decides to cancel class if fewer than some number of students are present when class starts. Arrival times go from on time () to arrived late ().
Given the arrival time of each student and a threshhold number of attendees, determine if the class is canceled.
The first line of input contains , the number of test cases.
Each test case consists of two lines.
The first line has two space-separated integers, and , the number of students (size of ) and the cancellation threshold.
The second line contains space-separated integers () describing the arrival times for each student.
Note: Non-positive arrival times () indicate the student arrived early or on time; positive arrival times () indicate the student arrived minutes late.
For example, there are students who arrive at times . Four are there on time, and two arrive late. If there must be for class to go on, in this case the class will continue. If there must be , then class is cancelled.
Complete the angryProfessor function in the editor below. It must return
YES if class is cancelled, or
angryProfessor has the following parameter(s):
- k: the threshold number of students
- a: an array of integers representing arrival times
For each test case, print the word
YES if the class is canceled or
NO if it is not.
If a student arrives exactly on time , the student is considered to have entered before the class started.
2 4 3 -1 -3 4 2 4 2 0 -1 2 1
For the first test case, . The professor wants at least students in attendance, but only have arrived on time ( and ) so the class is cancelled.
For the second test case, . The professor wants at least students in attendance, and there are who have arrived on time ( and ) so the class is not cancelled.
Solution in python
def angryProfessor(k, a): s = 0 for i in a: if i<1: s+=1 return "YES" if s<k else "NO" for _ in range(int(input())): n,k = map(int,input().split()) a = map(int,input().split()) print(angryProfessor(k, a))
Solution for lazy people.
for _ in range(int(input())): n,k = map(int,input().split()) a = map(int,input().split()) print("YES" if len([0 for i in a if i<1])<k else "NO")