07/26/20

# HackerRank ‘Drawing Book’ Solution

##### Short Problem Definition:

Brie’s Drawing teacher asks her class to open their books to a page number. Brie can either start turning pages from the front of the book or from the back of the book. She always turns pages one at a time.

Drawing Book

##### Complexity:

time complexity is O(1)

space complexity is O(1)

##### Execution:

Think of this as a 0-indexed book. Use integer division.

##### Solution:
def solve(n, p):
last_letter = n // 2
goal_letter = p // 2
return min(goal_letter, last_letter-goal_letter)

If you enjoyed this post, then make sure you subscribe to my Newsletter and/or Feed.

07/26/20

# HackerRank ‘Counting Valleys’ Solution

##### Short Problem Definition:

Gary is an avid hiker. He tracks his hikes meticulously, paying close attention to small details like topography. During his last hike he took exactly n steps. For every step he took, he noted if it was an uphill, U, or a downhill, D step. Gary’s hikes start and end at sea level and each step up or down represents a  unit change in altitude. We define the following terms:

• mountain is a sequence of consecutive steps above sea level, starting with a step up from sea level and ending with a step down to sea level.
• valley is a sequence of consecutive steps below sea level, starting with a step down from sea level and ending with a step up to sea level.

Counting Valleys

##### Complexity:

time complexity is O(N)

space complexity is O(1)

##### Execution:

I am a hiker myself, so this challenge is kinda funny. The description looks complex, but realistically one only needs to calculate whether the section was above or below sea level.

##### Solution:
def countingValleys(n, s):
level = 0
valleys = 0
for direction in s:
if direction == "U":
level += 1
if level == 0:
valleys += 1
else:
level -= 1

return valleys

If you enjoyed this post, then make sure you subscribe to my Newsletter and/or Feed.

07/26/20

# HackerRank ‘Electronics Shop’ Solution

##### Short Problem Definition:

Monica wants to buy a keyboard and a USB drive from her favorite electronics store. The store has several models of each. Monica wants to spend as much as possible for the 2 items, given her budget.

Given the price lists for the store’s keyboards and USB drives, and Monica’s budget, find and print the amount of money Monica will spend. If she doesn’t have enough money to both a keyboard and a USB drive, print -1 instead. She will buy only the two required items.

Electronics Shop

##### Complexity:

time complexity is O(N*M)

space complexity is O(1)

##### Execution:

The solution has a N*M complexity. If the range for B was significantly smaller, one could consider alternatives.

##### Solution:
def getMoneySpent(keyboards, drives, s):
spend = -1

for v1 in keyboards:
for v2 in drives:
if v1 + v2 <=s:
spend = max(spend, v1 + v2)

return spend

If you enjoyed this post, then make sure you subscribe to my Newsletter and/or Feed.

07/26/20

# HackerRank ‘Cats And A Mouse’ Solution

##### Short Problem Definition:

Two cats and a mouse are at various positions on a line. You will be given their starting positions. Your task is to determine which cat will reach the mouse first, assuming the mouse doesn’t move and the cats travel at equal speed. If the cats arrive at the same time, the mouse will be allowed to move and it will escape while they fight.

Cats and a Mouse

##### Complexity:

time complexity is O(N)

space complexity is O(1)

##### Execution:

This one is trivial.

##### Solution:
def catAndMouse(x, y, z):
catA = abs(x-z)
catB = abs(y-z)
if (catA < catB):
return "Cat A"
elif (catB < catA):
return "Cat B"
else:
return "Mouse C"

If you enjoyed this post, then make sure you subscribe to my Newsletter and/or Feed.