Looks like I'm going to be the lone dissenting view here.
First of all, we need to distinguish between copy-and-paste programming and cargo cult programming, as it seems that several people are conflating the two.
Copy and paste programming refers to the practice of copying and pasting the same code over and over again into different parts of a program, either verbatim or with only minor changes, instead of creating classes or subroutines or whatever higher-order code structures are offered by the language. Sometimes this is a symptom of a deficiency in the language/environment itself, but more often it is because the programmer does not understand (or value) abstraction.
Clearly, you're not a copy-and-paste programmer unless this is what you're doing. But it's obvious from your description of your activities that this isn't the question you're asking.
What you're actually referring to is called cargo cult programming. That is a set of anti-patterns, one among them being the wholesale copying of code from other parts of the program or from external sources, without really understanding how they work or if they're necessary at all.
It may be true that many programmers do this to a very limited extent. For example, sometimes we need to work around a bug in the framework or the operating system, and we'll just copy some well-known workaround because we're not really interested in learning all about somebody else's bug that we can't possibly fix ourselves. But for a professional programmer, these cases should be few and far between.
If you find yourself doing this frequently then it should be a red flag to you. And you've made this very unconvincing assertion:
[...] then I try to understand the code and tweak it according to my requirement.
Maybe this is true. Maybe. The problem is that every cargo-cult programmer will say this. The question is, do you really understand it? Truly?
Do you understand it to a sufficient extent that you could write it from scratch if you had to, given sufficient time? Would the result be reasonably free of bugs?
Or are you just making random changes to the code you copied until you hit the magic combination that does what you want?
I'm not leveling accusations; I've never met you, I know nothing about you. But this is something you need to think about.
A simple test is: Do you find yourself editing and recompiling very frequently when you are in the process of "tweaking" the code? Or do you read the code maybe once or twice, and immediately know what needs to be changed and how?
If your changes/tweaks are working on the first or maybe second try, you probably have actually understood the code you've appropriated. If you seem to be experimenting a lot with the copied code, then I'm sorry to say you are a cargo-cult programmer.
Keep that in mind for next time. Watch how you approach the problem. If you find yourself doing the coding equivalent of mashing buttons on a game pad, then you need to slow down, and try to learn a little more about the library or algorithm you are attempting to use, before going any further.