Posts

Showing posts from October, 2018

Dynamic Programming: Basics and a Practical Example

Introduction: Dynamic programming is a problem-solving technique that can seem quite intimidating at first glance. However, once you grasp its fundamentals and see it in action, you'll find it to be a powerful tool in your coding arsenal. In this blog post, we'll demystify the basics of dynamic programming and walk through a practical example. We'll provide you with clear explanations and a complete Python program, so you can understand and apply this essential concept with confidence. Understanding Dynamic Programming: At its core, dynamic programming is all about breaking down a complex problem into smaller, overlapping subproblems. It's a technique used to efficiently solve problems by storing and reusing solutions to these subproblems, rather than recomputing them. This leads to significant improvements in runtime complexity. Example: Fibonacci Sequence with Dynamic Programming Let's start by tackling a classic problem: calculating Fibonacci numbers. The Fibonac...

HourRank 30 | Video Conference | Hackerrank

Source  Hackerrank Bob is making a video conference software. Whenever a new person joins the conference, Bob displays the person's name in the interface. However, displaying full name is tedious and takes much space. So he decided to display the shortest prefix which doesn't match with any prefix of any person who has joined earlier. Let's suppose the first person to enter the conference is  alvin => a Now suppose next person to join is  alice . The shortest prefix of  alice  that doesn't match with any prefix of  alvin  is  ali . => a => ali If the full name of a new person matches completely with the full name of any person who has joined earlier, he will display the full name and add a suffix which indicates how many times the same name has occurred in the list so far. For example, if another person name  alvin  joins, the list will look like this: => a => ali => alvin 2 You are given the l...