https://medium.com/@michaeldotun08/strategies-for-solving-complex-coding-problems-efficiently-541d97b5fcd9