1. A method of programming a nonvolatile memory device, the method comprising: loading multi-bit data into a plurality of page buffers; programming multi-level cells included in a multi-level cell block to a plurality of intermediate program states based on the multi-bit data, the plurality of intermediate program states including a first intermediate program state and a second intermediate program state which is higher than the first intermediate program state; verifying whether the multi-level cells are programmed to the plurality of intermediate program states; generating cell group information for the first intermediate program state by checking whether a result of the verification for the second intermediate program state satisfies a predetermined criterion; and programming the multi-level cells to a plurality of target program states corresponding to the multi-bit data based on the cell group information.