Method and apparatus for programming multi level cell flash memory device

A method and an apparatus for programming a multi-level cell flash memory device are provided to improve applicability of the multi-level cell flash memory device to various system requirements by selectively programming the multi-level cell flash memory device from either an MSB(Most Significant Bit) or an LSB(Least Significant Bit). An apparatus for programming a multi-level cell flash memory device includes a voltage generator(60), a sense amplifier(30), a write driver(20), and a program controller(50). The voltage generator generates voltages for programming the memory cell into target states in response to a state select signal, and supplies the voltages to the memory cells. The sense amplifier detects the states of the memory cells through a bit line of the memory cell in response to a sense activation signal. The write driver activates the bit line of the memory cell, so that the data are programmed according to the write activation signal. The program controller generates the sense activation signal for detecting a threshold voltage of the memory cell in response to a program address, and generates the state select signal based on the current state of the memory cell. One of lower and upper bits is programmed according to the program address.