Olá, Iago, como vai?
Sua refatoração utilizando switch com padrões relacionais e o operador lógico and está correta e atende bem à proposta de reduzir a quantidade de condicionais encadeadas. A leitura ficou mais direta e a manutenção tende a ser mais simples, já que cada faixa de código está claramente separada em um case específico.
Como dica adicional, em cenários como esse também é possível trabalhar com o primeiro dígito do código para deixar a estrutura ainda mais enxuta. Por exemplo, ao dividir o valor por 100, o switch pode operar diretamente sobre o resultado inteiro dessa divisão, reduzindo a necessidade de verificar intervalos completos. Assim, um código como 451 resultaria em 4 e cairia diretamente no case correspondente à categoria Romance. Da mesma forma, um código como 762 resultaria em 7 e seria direcionado para Biografias/Memórias.
Parabéns pela implementação e obrigado por compartilhar sua solução. Continue participando e trazendo suas evoluções, o fórum está à disposição.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!