Olá, Victor, tudo bem?
Nos desculpe a demora para te dar uma resposta.
Quando estamos aprendendo lógica de programação, essa sensação de não conseguir criar a lógica sozinho é normal! É normal que no começo a gente sinta que estamos apenas "copiando código", principalmente nessas últimas partes do curso que a lógica começa a ficar bastante avançada.
Saiba que a lógica desses algoritmos mais avançados pode confudir até os programadores mais experientes!
A lógica de programação é algo que treinamos e vamos absorvendo aos poucos, com o tempo, conforme encontramos problemas reais.
E respondendo a sua pergunta: a melhor forma de praticar pode ser resolvendo ou simulando problemas da vida real! Se seu objetivo é ser desenvolvedor front-end, por exemplo, "clonar" uma página web é uma forma muito boa de praticar. Você treinaria HTML e CSS para constuir o layout da página e treinaria o JavaScript para simular o comportamento lógico da página.
Além disso, no início da nossa jornada, é normal nós consultarmos código que já fizemos antes para tentar resolver novos problemas! Aliás, devemos fazer isso para conseguirmos entender como cada solução resolve cada problema, e qual a diferença de um problema para o outro, o que cada um exige, e etc.
É normal também encontrarmos problemas que talvez não consigamos resolver, e tá tudo bem. Pode ser o caso de procurarmos um problema mais simples e entendermos o que nós somos capazes de resolver naquele momento.
Por último, sempre concilie prática com estudos! A prática serve para consolidar os estudos que você fez, mas em um momento você deve voltar a estudar para poder avançar mais na prática.
Se for o caso, o curso de Aprender a aprender pode te ajudar na sua jornada!
Espero ter ajudado! Abraços e bons estudos :)