1. A system for dynamically parallelizing an application program, the system comprising: a block generator to generate a data block having a size corresponding to a data area to be processed by the application program, using a block function; a multi-core controller including at least one processing device to assign, according to a thread allocation scheme and the generated data block, a unique operation of each of a number of available threads that are generated while running the application program; a monitoring unit to monitor the multi-core controller to determine, after a performance of at least one of the unique operations, the number of available threads, during the running of the application program; and a decision unit to selectively divide the data block using a map function and change the thread allocation scheme based on the determined number of available threads, during the running of the application program.