Hey there! So, another day, another problem! This time, it is called Odd Man Out, and it is quite simple to “get”:
You are hosting a party with
G
guests and notice that there is an odd number of guests! When planning the party you deliberately invited only couples and gave each couple a unique numberC
on their invitation. You would like to single out whoever came alone by asking all of the guests for their invitation numbers.
Well, just get the number that’s not duplicated! There are many ways to do this, be it counting the occurrences of every member of the list and finding the “odd man”, or the way I did, which is basically some push and pop into a new list. Python code follows:
for case in range(1,int(raw_input())+1): # For all test cases raw_input() # Discard the guest list size guests = raw_input().split(" ") # Get the list of guest IDs guestList = [] # Create an empty guest list for guest in guests: # For all guests if guestList.count(guest) > 0: # If it's already on the final list guestList.remove(guest) # if is a couple, remove else: # If it's not in the list yet guestList.append(guest) # Add its ID print "Case #%d: %s" % (case, guestList[0]) # Reports results
Needless to say, I bet there are many ways to improve this algorithm, but for this problem it performs decently, so no worries (unless you’re a hardcore bit banger). 🙂 See you tomorrow!