"헤엄" is a native word, meant "(of a person or animal) a movement or motion of swimming in the water (with arms and legs or its fins)", so "헤엄치다" and "헤엄하다" mean "to swim". The noun, 수영[물 수(水), 헤엄칠 영(泳)] is 한자어(漢字語), its meaning is "물에서 헤엄치기(to swim in the water)", so "수영하다" means "to swim". However, 수영하다 is usually used only with person, not with animal. for example, 물고기가 헤엄치다. O. 사람이 헤엄치다 O. 물고기가 수영하다 X, 사람이 수영하다 O.