Python No Idea! HackerRank Solution
Task
There is an array of n integers. There are also 2 disjoint sets, A and B, each containing m integers. You like all the integers in set A and dislike all the integers in set B. Your initial happiness is 0. For each i integer in the array, if i belongs to A, you add 1 to your happiness. If i belongs to B, you add -1 to your happiness. Otherwise, your happiness does not change. Output your final happiness at the end.
Note: Since A and B are sets, they have no repeated elements. However, the array might contain duplicate elements.
Constraints
-
1 <= n <= 105
-
1 <= m <= 105
-
1 <= Any integer in the input <= 109
Input Format
The first line contains integers n and m separated by a space.
The second line contains n integers, the elements of the array.
The third and fourth lines contain m integers, A and B, respectively.
Output Format
Output a single integer, your total happiness.
Sample Input
3 2
1 5 3
3 1
5 7
Sample Output
1
Explanation
You gain 1 unit of happiness for elements 3 and 1 in set A. You lose 1 unit for 5 in set B. The element 7 in set B does not exist in the array so it is not included in the calculation.
Hence, the total happiness is 2 – 1 = 1.
Solution:
if __name__ == "__main__":
happiness = 0
n, m = map(int, input().strip().split(' '))
elements_arr = list(map(int, input().strip().split(' ')))
A = set(map(int, input().strip().split(' ')))
B = set(map(int, input().strip().split(' ')))
for i in elements_arr:
if i in A:
happiness += 1
elif i in B:
happiness -= 1
print(happiness)
Steps Used in solving the problem -
Step 1: First we have taken the input of n,m, and elements_arr.
Step 2: then we have also taken the input of A and B as a set.
Step 3: then we used a for loop in elements_arr.
Step 4: Inside For loop we used an if condition to check if i is in A then add 1 unit to happiness and elif to check if i is in B then subtract 1 unit from happiness.
Step 5: At last we printed happiness.