Vocês utilizam alguma estratégia para a resolução de problemas de algoritimos mais complexos? muitas vezes eu me perco tentando encontrar uma solução pra um problema, complicando demais e fazendo uma volta desnecessária para resolve-lo.
Vejo pessoas resolvendo o mesmo problema de maneira mais simples e parece tão fácil. Enquanto isso, me pego desistindo de resolver a questão por conta própria.
Essa facilidade pra resolver problemas lógicos vem com o tempo ou eu que talvez estou indo por uma abordagem errada?
Métodos de resolução de problemas
5 Respostas
Cmo eu faço:
quebro o problema no maior número d partes possíveis.
resolvo cada parte separadamente, testando cada uma.
depois junto em uma solução.
Se tentar resolver o problema como um todo vc se perde. o algoritmo n vai funcionar e vc nem vai saber q parte q n está funcionando.
Ex.: algoritmo para calcular o imc:
primeiro eu faria a entrada de dados e validaria se realmente estou recebendo os dados nas variáveis corretas.
Depois faria a equação, primeiramente com valores estáticos para testar a equação apenas. Depois faria com as variáveis.
E por último a exibição dos dados.
Mta gnt n consegue e desiste pq n funciona o algoritmo como um todo, mas na verdade n tá nem conseguindo colocar a entrada de dados nas variáveis corretas.
Se você está falando sobre questões de competição/entrevista técnica, tem que praticar, e muito. De tanto praticar, você vai começar a enxergar padrões nos problemas e já vai saber mais ou menos para qual lado deve seguir. Ajuda muito saber de estruturas de dados (árvores, filas, pilhas, heaps, listas encadeadas, tabelas de hash, etc.) e a complexidade computacional das operações com elas (inserção, procura, remoção, balanceamento, etc.), porque geralmente as estruturas vão te ajudar a resolver o problema de forma otimizada.
Resolve todos os exercícios do HackerRank, já vai te dar uma prática considerável. Começa pelos bem fáceis e vai subindo a dificuldade. Quando não conseguir resolver um problema, abre o editorial e estuda o assunto. Olha as soluções dos outros nos comentários e compara com as suas.
E você recomenda algum livro a respeito de estruturas da dados?
Se você quiser um livro sobre estruturas de dados especificamente para resolver esses problemas, lê “Cracking the Coding Interview”. As explicações são simples e tem bastante exercício.
Se você quiser um livro mais profundo, com provas de corretude e justificativas mais elaboradas, lê o livro do Cormen (Introduction to Algorithms).
Sabendo essas coisas você já consegue passar na entrevista técnica de código de qualquer empresa americana. Vai ficar só faltando estudar a parte de system design.
Já pensou em trabalhar na Amazon, Facebook, Google, Microsoft? Esse é o caminho 
Você sabe por que existem níveis (jr, pl, sr) em diversas posições do mercado de trabalho? Por conta da capacidade de resolver problemas que cada nivel terá.
Você não pode dar um problema a um jr, um pl e um sr e esperar que todos resolvam no mesmo tempo. É incoerente. Lógico, pode ocorrer do pl ou do jr conseguirem resolver antes do sr, mas, isso não significa muita coisa.
Isso vai acontecer. Conforme você adquire experiência, as situações vão ficando mais tranquilas e demandam menos tempo para resolução.
Considerando a mina própria experiência: sim. Quanto mais você trabalhar com algo, mais tranquilo isso será para ti. O começo é sempre difícil, mas, o tempo facilita muito.