<p>
</p>
<p>Yes, it can be acquired through lots of practice.</p>
<p>
</p>
<p>There are various schools of thought on this. Some people feel that even if you can’t solve a problem, some of the techniques you use to solve it can be used to solve other problems. Others seem to subscribe to an “either you know it or you don’t” philosophy, but we don’t often hear about what types of problems they have trouble with. No one, not even the likes of Knuth, Hennessey, etc. can solve all CS problems, but some are in a position to choose what types of problems they will (and won’t) solve.</p>
<p>Here are a few things for you to read:</p>
<p>[Considering</a> CS?](<a href=“http://cs.stanford.edu/degrees/undergrad/Considering.shtml]Considering”>http://cs.stanford.edu/degrees/undergrad/Considering.shtml)
[The</a> Guerrilla Guide to Interviewing (version 3.0)](<a href=“http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html]The”>The Guerrilla Guide to Interviewing (version 3.0) – Joel on Software)
[E.W.Dijkstra</a> Archive: On the teaching of programming, i.e. on the teaching of thinking. (EWD 473)](<a href=“http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD473.html]E.W.Dijkstra”>E.W.Dijkstra Archive: On the teaching of programming, i.e. on the teaching of thinking. (EWD 473))</p>