Skip to content

Instantly share code, notes, and snippets.

@mridubhatnagar
Last active May 19, 2018 22:32
Show Gist options
  • Save mridubhatnagar/87c05208efdaa6d0f1cadeb19f713e7f to your computer and use it in GitHub Desktop.
Save mridubhatnagar/87c05208efdaa6d0f1cadeb19f713e7f to your computer and use it in GitHub Desktop.
Approach for solving Hacker Rank Problem Electronics Shop
reference link to problem - https://www.hackerrank.com/challenges/electronics-shop/problem
Approach 1: Correct output but on some test cases gave Run time Error
#!/bin/python3
import os
import sys
#
# Complete the getMoneySpent function below.
#
def getMoneySpent(keyboards, drives, b):
#
# Write your code here.
#
#Part One: Finding sum of 2 items one 1 keyboard, 1 USB drive
#Part One: Finding sum of 2 items one 1 keyboard, 1 USB drive
keyboards_drives = []
for position, value in enumerate(keyboards):
for drive_pos, drive_val in enumerate(drives):
sum = value + drive_val
keyboards_drives.append(sum)
print(keyboards_drives)
for pos, item in enumerate(sorted(keyboards_drives)):
print("item to be processed next ", item)
if item > b:
print("item removed ", item)
keyboards_drives.remove(item)
print(keyboards_drives)
print(keyboards_drives)
# If price is greater than budget print -1 else 1
if len(keyboards_drives) !=0:
print(max(keyboards_drives))
output = max(keyboards_drives)
else:
print("-1")
output = -1
return output
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
bnm = input().split()
b = int(bnm[0])
n = int(bnm[1])
m = int(bnm[2])
keyboards = list(map(int, input().rstrip().split()))
drives = list(map(int, input().rstrip().split()))
#
# The maximum amount of money she can spend on a keyboard and USB drive, or -1 if she can't purchase both items
#
moneySpent = getMoneySpent(keyboards, drives, b)
fptr.write(str(moneySpent) + '\n')
fptr.close()
Test Case
374625 797 951
183477 732159 779867 598794 596985 156054 445934 156030 99998 58097 459353 866372 3337
Expected Output
374625
Resulted in a Run Time Error
Further Tinkering. Optimized the logic. Reducing couple of lines.
Approach 2:
#!/bin/python3
import os
import sys
#
# Complete the getMoneySpent function below.
#
def getMoneySpent(keyboards, drives, b):
#
# Write your code here.
#
#Part One: Finding sum of 2 items one 1 keyboard, 1 USB drive
keyboards_drives = []
for position, value in enumerate(keyboards):
for drive_pos, drive_val in enumerate(drives):
sum = value + drive_val
if sum <= b:
keyboards_drives.append(sum)
print(keyboards_drives)
#If price is greater than budget print -1 else 1
if len(keyboards_drives) !=0:
print(max(keyboards_drives))
output = max(keyboards_drives)
else:
print("-1")
output = -1
return output
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
bnm = input().split()
b = int(bnm[0])
n = int(bnm[1])
m = int(bnm[2])
keyboards = list(map(int, input().rstrip().split()))
drives = list(map(int, input().rstrip().split()))
#
# The maximum amount of money she can spend on a keyboard and USB drive, or -1 if she can't purchase both items
#
moneySpent = getMoneySpent(keyboards, drives, b)
fptr.write(str(moneySpent) + '\n')
fptr.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment