Home / Development / Software Development / Python / HackerRank Challenges
HackerRank Python Challenges
In this article I show how I solved HackerRank Python challenges. The main purpose of the content is to present my acquired experiences primarily for learning purposes.
Other categories:
Introduction
Basic Data Types
Strings
Sets
Itertools
Collections
Built-Ins
Numpy
Others
Basic Data Types
List Comprehensions
Task:
Let's learn about list comprehensions!
You are given three integers x, y and z representing the dimensions of a cuboid along with an integer n.
Print a list of all possible coordinates given by (i, j, k) on a 3D grid where the sum of i + j + k is not equal to n.
Here, 0 <= i <= x; 0 <= j <= y; 0 <= k <= z. Please use list comprehensions rather than multiple loops, as a learning exercise.
Solution:
x = int(input()) y = int(input()) z = int(input()) n = int(input()) list1 = list([i, j, k] for i in range(x + 1) for j in range(y + 1) for k in range(z + 1) if i + j + k != n) print(list1)
Find the Runner-Up Score!
Task:
Given the participants' score sheet for your University Sports Day, you are required to find the runner-up score.
You are given n scores. Store them in a list and find the score of the runner-up.
Solution:
n = int(input()) list1 = list(set(map(int, input().split()))) list1.sort() print(list1[-2])
Nested Lists
Task:
Given the names and grades for each student in a class of N students, store them in a nested list and print the name(s) of any student(s) having the second lowest grade.
Solution:
main_list = [] for i in range(int(input())): name = input() score = float(input()) nested_list = [] nested_list.append(name) nested_list.append(score) main_list.append(nested_list) del nested_list #remove the lowest grade lowest_grade = main_list[0][1] for item in main_list: if item[1] < lowest_grade: lowest_grade = item[1] to_delete = [] for item in main_list: if item[1] == lowest_grade: to_delete.append(item) for item in to_delete: main_list.remove(item) lowest_grade = main_list[0][1] #find the second lowest grade for item in main_list: if item[1] < lowest_grade: lowest_grade = item[1] final_list = [] for item in main_list: if item[1] == lowest_grade: final_list.append(item[0]) final_list.sort() for item in final_list: print(item)
Finding the percentage
Task:
The provided code stub will read in a dictionary containing key/value pairs of name:[marks] for a list of students.
Print the average of the marks array for the student name provided, showing 2 places after the decimal.
Solution:
n = int(input()) student_marks = {} for i in range(n): name, *line = input().split() scores = list(map(float, line)) student_marks[name] = scores query_name = input() #print(student_marks[query_name]) sum_score = 0 amount = 0 for score in student_marks[query_name]: sum_score += score amount += 1 print("%.2f" % (sum_score / amount))
Lists
Task:
Consider a list (list = []). You can perform the following commands:
- insert i e: Insert integer e at position i.
- print: Print the list.
- remove e: Delete the first occurrence of integer e.
- append e: Insert integer at the end of the list.
- sort: Sort the list.
- pop: Pop the last element from the list.
- reverse: Reverse the list. Initialize your list and read in the value of n followed by n lines of commands where each command will be of the 7 types listed above. Iterate through each command in order and perform the corresponding operation on your list.
Solution:
n = int(input()) l = [] for i in range(n): command = input() if command.startswith("insert"): c = command.split() l.insert(int(c[1]), int(c[2])) elif command.startswith("print"): print(l) elif command.startswith("remove"): c = command.split() l.remove(int(c[1])) elif command.startswith("append"): c = command.split() l.append(int(c[1])) elif command.startswith("sort"): l.sort() elif command.startswith("pop"): l.pop() elif command.startswith("reverse"): l.reverse()
Tuples
Task:
Given an integer, n, and n space-separated integers as input, create a tuple, t, of those n integers.
Then compute and print the result of hash(t).
Solution:
n = int(input()) l = input().split() for i in range(n): l[i] = int(l[i]) print(hash(tuple(l)))