What is the problem? Why is it a problem? How to approach the problem? Etc. We all are surrounded by problems. Problems can be in maths,programming, or life. Once in a while we have come across problems that seem complex enough to be solved.

Once we get stuck at a particular problem our mind seems to procrastinate or deviate from the problem.

So, how can we solve a problem? What is problem solving? How can I achieve a feasible solution to any of my problems?

Today we are going to see certain techniques and approaches to solve problems. To get started we must know certain prerequisites for problem solving.

Let us dive into problem solving.

**Prerequisites:**

**Problem**: Before solving we must have a problem. Problem can be defined as any situation that can cause harm or cause troubles and is needed to be eliminated. In simple words, the problem is an inquiry.**Open mind**: An open mind is important to solve any problem. Open mindedness helps you to understand and look at every aspect of a problem. You must be ready to accept and know your own mistakes.

**Different approaches to solve problem:**

**Naive approach**: This is a simple approach where you see a problem and try to find a solution without considering resources and time. Only motive is to reach a solution. Naive approach is used by one who is new to the system.

For example: Linear search

**Greedy approach**: Greedy approach can be said as an approach where maximization of solution is done. You have to find a solution in such a way that profit is maximum.

For example: Job sequencing with deadline

**Divide and conquer**: Divide and conquer is an approach where you divide problems into more simple problems so that solution can be easily obtained. Time can be saved using this approach.

For example: Merge sort

**Dynamic approach**: This approach is usually applied for complex problems that need to be solved in a limited amount of time. Dynamic approach saves time as well as resources.

For example: Millionth Fibonacci series

**Optimal approach**: Optimal approach guarantees the feasible solution for problems considering time and resources. This approach can be used when you require the efficient/optimal solution.

For example: min-max

**Backtracking**: In backtracking we try to find a set of all possible solutions in a recursive manner and remove solutions that fail to give feasible solutions.

For example:Solving puzzle

**Trial and Erro**r: This is a common approach to find a solution. You try and after failing you try again by seeing where you failed last time.

For examples: finding Armstrong number between range

After discussing approaches to solve problems let us now see steps to solve problems.

Problem solving is not only about finding a solution but to understand the problem and manage solutions.

Following are steps to solve a problem:

1. **Define: **

This is the most important step.

In this step you have to understand the problem. Your definition of a problem will lead you to a solution.

Understand requirements and problems. It’s like if you know the problem you can find a solution easily and quickly.

Definition of the problem must be complete. Know boundaries/constraints of the problem.

Definition of should be clear so that by just reading definition you can reach a solution.

2**.Choose: **

Once the definition of the problem is complete choose an applicable approach to find a solution.

Approaches differ from person to person and surroundings. If the definition of the problem is clear, choosing an approach becomes really easy.

Select approach considering boundaries. Approach you choose must meet all requirements of the problem.

3. **Ideate**:

Try to reach a solution by using the chosen approach. Use creative ideas to find a solution. It may take time or you get stuck but keep motivation high. Don’t fixate on single things. Try different aspects and methods.

Try to redefine your problem and find the possible solution.

Iterate over solution to find best solution. Find a way to reduce time and resource usage.

4.**Test**:

After finding a solution test the solution and check credibility of solution. Try for different sets of variables and situations.

Testing helps to make your solution optimal. It verifies that it can be used for all sets of values of the same problem to reach a solution.

**Certain Tips:**

- Don’t make false assumptions
- Don’t give up
- Your mind is more powerful than you think
- Keep it simple
- Be relaxed
- Take help

At every point in life we are encountered by problems. Some are necessary problems while some are for testing you. Problems in life or math or science or programming tend to look complex in nature.

By avoiding problems you can not reach a solution. Try to confront the problem then and only then you can reach your destination.

There is a saying that “You miss 100% of shots you don’t take”. You may fail a few times but you learn something every time.

See life isn’t about success or failure rather it is about how you face your problems.

Use the power of your mind and conquer your problem. It may seem difficult at first but once you start finding a solution it becomes a piece of cake.

C’mon let Face problem.

All the best!