Problem-solving skills and the problem-solving process are a critical part of daily life both as individuals and in organizations. In computer science, problem-solving is the most interesting task that increases our logical sense and empowers us to find the best solution. If you are a developer trying to progress in your career or a beginner trying to break into the prestigious career of software engineering, problem-solving is a must.
In HackerRank’s 2019 Skills Report, which questioned over 71,000 respondents on a variety of tech issues, there’s a (deeply buried) question about what employers and recruiters value in potential hires.
The clear winner (among businesses of all sizes) was problem-solving: On average, 94.9 percent of respondents ranked this as a “core” desired competency in recruits. In a distant second were programming language efficiency (56.6 percent), debugging (47.1 percent), and system design (40.3 percent).
“Demonstrating computational thinking or the ability to break down large, complex problems is just as valuable (if not more so) than the baseline technical skills required for a job,” HackerRank stated.
Start with aN easy one
Problem-solving is fun, you can solve a problem by analyzing it and coming to a solution, or follow a process.
Let’s understand problem solving by solving a famous problem. The Pizza cutting problem.
A pizza can be cut into many pieces but cut it only vertically, horizontally, or diagonally. By making 2 cuts on a pizza, you can produce a maximum of 4 pieces, on 3 cuts, you can produce a maximum of 7 pieces, and so on. Your duty is, “Given a pizza and the number of cuts you can make, output the maximum number of pizza pieces the given number of cuts can produce”. The number of cuts can be any positive integer.
Understand the problem
There is one pizza, and the number of cuts you can make, Condition is you can cut it only vertically, horizontally, and diagonally. Cut it in a way that you can produce the maximum pieces of pizza.
// n = number of cuts maximumPiece = n*(n+1)/2; // for n = 3, 3*(3+1)/2 +1 = 7, for n = 4, 4*(4+1)/2 + 1 = 11
Well, there you solved the pizza cutting problem; now you can easily tell the maximum number of pieces anyone can produce on any given number of cuts with the solution you just generate rather than manually cutting an actual pizza and trying to maximize the number of pieces.
Where to practice?
These are some most popular coding practice sites where you can find problems and submit solutions for them. Problems are often categorized with difficulty level. Different coding sites are popular for different specializations like the online judge is popular for beginners, and one of the most recommended, Codeforces is especially for weekly online contests, and one of the most prestigious coding platforms, LeetCode, HackerRank, and CoderByte are popular for interview preparation. You can start from any of those sites, you will find easy and giveaway problems for starting your programming journey, then try to solve all categories of problems.
Where to learn?
Oftentimes, you will get stuck trying to solve a problem, you can get help from the discussion section/forum on that coding site where you will get the idea and the different approaches of the solution, or If you need to learn certain data structure/algorithms to solve the problem. There are some awesome sites out there. GeeksForGeeks is one of the best data structure and algorithm learning sites.
This is the first blog about Programming and problem-solving. I tried to introduce you a little to the world of programming and its impact of it. In the upcoming blogs, I will dive deep into different approaches, categories, and algorithms related to problem-solving. Till then, happy coding 😊