Last active
May 19, 2018 22:32
-
-
Save mridubhatnagar/87c05208efdaa6d0f1cadeb19f713e7f to your computer and use it in GitHub Desktop.
Approach for solving Hacker Rank Problem Electronics Shop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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