I am already 23 and I am developing javaSE from past 2 years, yet I am not very much comfortable programing in general.

Actually I am having trouble to implement algorithms or somethings like 'developing logic'.

I drew up a conclusion that I need to focus more on algorithms, but some how I am quiet weak in it.

Apart from my regular courses, I am self trained

java programer by programing approximately 2hours a day.

I tried my hands on code-chef and project euler.

Solved about 40 problems now from project euler.

And many more coding problems, I developed board games, but I always used the inefficient method, and its a bad habbit that I cant get rid off.(eg, using dynamic memory allocation in AI, slows down the speed tremendously).

I neither do have formal back-ground in mathematics nor in computing, but I wish to be a good programmer, I am willing to put up my efforts, can anyone guide me how to be a better programer?

-Thank you.