Your students are in high school, which means that there are limits to how much responsibility you can expect them to take for their learning. And you're already most of the way through this year, so it will be difficult to apply this to this year's class. So what follows is the extreme version, and you'll have to decide how strictly to apply it, and you'll probably have to wait until next year with a new class to establish that This Is How It Is.
You should teach your students how to do problems. When your students need to do a problem, your lessons should show them how to do it. If they are having trouble applying your lessons to the problem, they should be able to show what parts of your lesson they have applied, what part they are having trouble applying, and why they are having trouble.
If a student wants to ask you for help on a problem, they should have a list of key concepts for the problem, lecture notes from when you went over those concepts, what work they've done applying those notes, and questions about how to apply them. If they don't have that ready, walk away.
As I said, this is an extreme version, and you'll probably want to not go quite this far, especially at the beginning. But you should be asking them to show effort on their own, and refuse to help if they aren't putting any effort forth. Ask leading/Socratic questions, and as the school year goes on, ask fewer, less leading questions, and demand the students do more and more on their own (not necessarily more and more of the actual math work, but more and more of the meta-learning stuff: identifying what the key concepts in a question are, looking in the book/lecture notes/internet/etc. for those concepts, writing down lists of "things I'm told" and "things I'm supposed to find", identifying applicable formalae/algorithms/etc.)
In education, there is the metaphor of "scaffolding": if you're building a building, you may need a bunch of outside supports as you're building, but if the building still needs those supports at the end, you haven't done your job. Your job as a teacher is to take away support, slowly enough that your students aren't left adrift, but fast enough that by the end they can do the work on their own. Getting the balance right is one of the major challenges of teaching.
If they want to check their work, an option is to ask another student (assuming you don't have concerns of students copying each other's work). Other options would be giving them the answer, or, if you're worried about them just taking the answer and not doing the work, giving them a list of answers (that is, the answers from all the problems, plus several other decoy answers, with the order scrambled) so they can check whether the answer they got is on the list, or giving them a "hash" of the answer (some property that is unlikely to be shared with an incorrect answer, but is not enough to get the answer). But if this is homework, they shouldn't be stressing out on getting the right answer in the first place. You shouldn't be taking away a significant points for getting homework answers wrong, especially if they are easy to miss errors (if they get an answer that's obviously wrong and don't notice, maybe that deserves some points taken off). The whole point of homework is to have a chance to make mistakes before the test.