1. A method of programming a nonvolatile memory device, the method comprising: performing an erase operation; counting an erase pulse application number once the erase operation is completed; comparing the counted erase pulse application number and a reference value; defining a post program start voltage based on the compared result; performing a post program operation and a verify operation using the defined post program start voltage; and performing a program operation on cells on which the post program operation has been completed.