14-4-³ª.ÀÚ·á ±¸Á¶

ÇÁ·Î±×·¥À» ÀÛ¼ºÇϴ ù ´Ü°è´Â ÀÌ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÒ ÀÚ·á ±¸Á¶¸¦ ¼³°èÇÏ´Â °ÍÀÌ´Ù. Ç¥ÇöÇϰíÀÚ ÇÏ´Â Á¤º¸¸¦ °¡Àå È¿À²ÀûÀ¸·Î ÀúÀåÇÏ°í °ü¸®ÇÒ ¼ö ÀÖ´Â ÀÚ·á ±¸Á¶¸¦ ¼±ÅÃÇØ¾ß ¾Ë°í¸®ÁòÀÌ °£´ÜÇØÁö°í ±¸Á¶°¡ Æ°Æ°ÇØÁø´Ù. ¹Ý¸é ÀÚ·á ±¸Á¶¸¦ À߸ø ¼±ÅÃÇÏ¸é ¾Ë°í¸®ÁòÀÌ º¹ÀâÇØÁö°í ±¸Á¶°¡ ÁöÀúºÐÇØÁ®¼­ ¿À·ù°¡ ¸¹¾ÆÁö°í È®ÀåÇϱ⵵ ¾î·Á¿öÁø´Ù. ¼Ò½º¸¦ ºÐ¼®Çϴ ù ´Ü°è´Â ÇÁ·Î±×·¥ Àü¹Ý¿¡ °ÉÃÄ ¿µÇâ·ÂÀ» Çà»çÇÏ´Â Àü¿ªº¯¼ö¸¦ ºÐ¼®ÇÏ´Â °ÍÀ̸ç Àü¿ªº¯¼ö°¡ ÀûÀ»¼ö·Ï ºÐ¼®Çϱ⠽±´Ù.

¦ã±â °ÔÀÓÀÇ °ÔÀÓÆÇÀº ¼ýÀÚµéÀÌ ¼û¾î ÀÖ´Â ¿©·¯ °³ÀÇ Ä­À¸·Î ±¸¼ºµÇ´Âµ¥ °¢ Ä­¿¡ ¾î¶² ¼ýÀÚ°¡ ¼û°ÜÁ® ÀÖ´ÂÁö¸¦ ÀúÀåÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ °¢ Ä­Àº ã¾Ò°Å³ª ¾ÆÁ÷ ¸øÃ£¾Ò°Å³ª ¾Æ´Ï¸é ã±â À§ÇØ Àӽ÷Π¿­·È°Å³ª ¼Â Áß ÇϳªÀÇ »óŸ¦ °¡Áø´Ù. ¼ýÀÚ¿Í »óÅ µÎ °¡Áö Á¤º¸¸¦ ÇѲ¨¹ø¿¡ Ç¥ÇöÇØ¾ß ÇϹǷΠĭ Çϳª´Â ´ÙÀ½ ±¸Á¶Ã¼·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Ù.

 

enum Status { HIDDEN, FLIP, TEMPFLIP };

struct tag_Cell

{

     int Num;

     Status St;

};

tag_Cell arCell[4][4];

 

Status ¿­°ÅÇüÀº Ä­ÀÇ »óŸ¦ ³ªÅ¸³»´Âµ¥ °¡´ÉÇÑ °ªÀÌ ¼û±è(HIDDEN), ¿­¸²(FLIP), Àá½Ã ¿­¸²(TEMPFLIP) ¼Â ¹Û¿¡ ¾øÀ¸¹Ç·Î ¿­°ÅÇüÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. tag_Cell ±¸Á¶Ã¼´Â Ä­¿¡ ¼û°ÜÁø ¹øÈ£ Num°ú ÇöÀç »óÅ St¸¦ ¸â¹ö·Î °¡Áø´Ù. ÀÌ·± Ä­ÀÌ 4*4, ÀüºÎ 16°³ ÀÖÀ¸¹Ç·Î °ÔÀÓÆÇ ÀüüÀÇ »óŸ¦ ±â¾ïÇÏ·Á¸é 2Â÷¿ø ±¸Á¶Ã¼ ¹è¿­·Î ÃæºÐÇÏ´Ù. tag_Cell ±¸Á¶Ã¼ 2Â÷ ¹è¿­ arCellÀÌ ÀÌ °ÔÀÓÀÇ ÇÙ½É ÀÚ·á ±¸Á¶ÀÌ´Ù.

arCell ¹è¿­ÀÇ 1Â÷ ÷ÀÚ´Â °ÔÀÓÆÇÀÇ XÁÂÇ¥À̰í 2Â÷ ÷ÀÚ°¡ °ÔÀÓÆÇÀÇ YÁÂÇ¥ÀÌ´Ù. »ç¶÷ÀÌ ±ÛÀ» ÀÐÀ» ¶§ ÇÑ ÁÙÀ» ´Ù ÀÐ°í ´ÙÀ½ ÇàÀ» Àд ½À°üÀÌ ÀÖÀ¸¹Ç·Î Y ÁÂÇ¥°¡ ´õ ¾ÕÂÊ¿¡ ¿À´Â °ÍÀÌ ÀϹÝÀûÀÌÁö¸¸ arCellÀÇ Ã·ÀÚ ±¸Á¶´Â °Å²Ù·Î ¼³°èÇß´Ù. Ưº°ÇÑ ÀÌÀ¯´Â ¾ø°í gotoxy ÇÔ¼ö°¡ xÁÂÇ¥¸¦ ¸ÕÀú ¿ä±¸Çϱ⠶§¹®¿¡ ÀÌ ¼ø¼­¿¡ ¸ÂÃá °ÍÀε¥ ÀÌ ¹è¿­À» µð¹ö°Å·Î µé¿©´Ù º¸¸é ¿·À¸·Î ´©¿î ¸ð¾çÀ¸·Î º¸ÀÏ °ÍÀÌ´Ù. ÀÌ·± ÷ÀÚÀÇ Àǹ̴ °³¹ßÀÚ°¡ ÀÓÀÇ·Î ¼±ÅÃÇÒ ¼ö ÀÖµÇ ÇÑ ¹ø Á¤ÇÑ Àǹ̸¦ Áß°£¿¡ ¹Ù²Ù±â´Â ¾î·Á¿ì¹Ç·Î Àß »ý°¢Çؼ­ Á¤ÇØ¾ß Çϸç ÷ÀÚÀÇ Àǹ̸¦ Àß ¼÷ÁöÇØ¾ß ÇÑ´Ù.

ÀÌ ±¸Á¶Ã¼ ¹è¿­·ÎºÎÅÍ °ÔÀÓÆÇÀÇ ¸ðµç Á¤º¸¸¦ ´Ù Á¶»çÇÒ ¼ö Àִµ¥ Á¦ÀÏ Ã¹Ä­ÀÇ ¼ýÀÚ¸¦ ¾Ë°í ½ÍÀ¸¸é arCell[0][0].NumÀ» ÀÐÀ¸¸é µÇ°í ù ÁÙ ¿À¸¥ÂÊ ³¡ÀÇ ÇöÀç »óŸ¦ ¾Ë°í ½ÍÀ¸¸é arCell[3][0].St¸¦ ÀÐÀ¸¸é µÈ´Ù. ÀÌ ±¸Á¶Ã¼´Â °ÔÀÓÀÌ ÁøÇàµÇ´Âµ¿¾È °è¼Ó »óŸ¦ À¯ÁöÇØ¾ß ÇÏ°í ¸ðµç ÇÔ¼ö°¡ ÀÚÀ¯·Ó°Ô ÀÐÀ» ¼ö ÀÖ¾î¾ß ÇϹǷΠÀü¿ªÀ¸·Î ¼±¾ðµÇ¾ú´Ù.

µÎ °³ÀÇ µµ¿ì¹Ì ÇÔ¼ö GetRemain°ú GetTempFlipÀº arCell ¹è¿­·ÎºÎÅÍ °ÔÀÓ ¿î¿µ¿¡ ÇÊ¿äÇÑ Á¤º¸¸¦ Á¶»çÇÑ´Ù. GetRemainÀº ¾ÆÁ÷ ãÁö ¸øÇÑ Ä­ÀÇ °³¼ö¸¦ Á¶»çÇϴµ¥ ¹è¿­ Àüü¸¦ ¼øÈ¸Çϸç St°¡ FLIPÀÌ ¾Æ´Ñ Ä­ÀÇ °³¼ö¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ Á¤º¸´Â È­¸é¿¡ ³²Àº °³¼ö Ãâ·Â¿¡ »ç¿ëµÇ°í °ÔÀÓ ³¡ Á¡°Ë¿¡µµ »ç¿ëµÇ´Âµ¥ ÀÌ ÇÔ¼ö°¡ 0À» ¸®ÅÏÇÏ¸é ¸ðµç Ä­ÀÇ »óŰ¡ FLIPÀÌ µÇ¾ú´Ù´Â ¶æÀÌ´Ù.

GetTempFlip ÇÔ¼ö´Â Àӽ÷ΠµÚÁý¾îÁø Ä­ÀÇ ¹øÈ£¸¦ Á¶»çÇÑ´Ù. arCellÀÇ St ¸â¹ö´Â °¢ Ä­ÀÇ »óŸ¦ ±â¾ïÇϹǷΠÀÌ Á¤º¸¸¦ ÀÐÀ¸¸é ÀÓÀÇÀÇ Ä­ »óŸ¦ ¾Ë ¼ö ÀÖÁö¸¸ ¹Ý´ë·Î ƯÁ¤ÇÑ »óÅ¿¡ ÀÖ´Â Ä­ÀÇ ¹øÈ£´Â ÀÌ ¹è¿­·ÎºÎÅÍ °ð¹Ù·Î ÀÐÀ» ¼ö ¾øÀ¸¸ç ¹è¿­ Àüü¸¦ ¼øÈ¸ÇØ ºÁ¾ß ÇÑ´Ù. GetTempFlipÀº St°¡ TEMPFLIPÀÎ Ä­ÀÇ ¹øÈ£¸¦ Á¶»çÇ쵂 ÀÌ·± »óÅ¿¡ ÀÖ´Â Ä­Àº °ÔÀÓ ¿î¿µÁß¿¡´Â Çϳª¸¸ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ ¹è¿­À» ¼øÈ¸Çϸ鼭 ÃÖÃÊ·Î TEMPFLIP »óŸ¦ °¡Áö´Â ¹øÈ£¸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à ¹è¿­ Àüü¸¦ ¼øÈ¸Çصµ TEMPFLIP »óÅÂÀÇ Ä­ÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é *tx¿¡ -1À» ´ëÀÔÇϴµ¥ ÀÌ´Â Àӽ÷Π¿­¸°Ä­ÀÌ ¾ø´Ù´Â ¶æÀÌ´Ù. µÎ °³ÀÇ °ªÀ» ¸®ÅÏÇØ¾ß ÇϹǷΠÂüÁ¶ È£ÃâÀ» »ç¿ëÇß´Ù.

°ÔÀÓÆÇÀ» ÃʱâÈ­ÇÏ´Â InitGame ÇÔ¼ö´Â ¸ÕÀú memsetÀ¸·Î arCell ¹è¿­À» ¸ðµÎ 0À¸·Î ÃʱâÈ­Çϴµ¥ ÀÌ ÃʱâÈ­¿¡ ÀÇÇØ ¸ðµç Ä­ÀÇ NumÀº ÀÏ´Ü 0ÀÌ µÇ¸ç St´Â ù ¹øÂ° ¿­°Å »ó¼öÀÎ HIDDENÀÌ µÈ´Ù. °ðÀÌ¾î ·çÇÁ¸¦ µ¹¸ç arCell ¹è¿­ÀÇ Num ¸â¹ö¿¡ °°Àº ¼ýÀÚ¸¦ µÎ °³¾¿ ¸¶±¸ÀâÀÌ·Î ¹èÄ¡ÇÏ¿© ¼û±ä´Ù. °ÔÀÓ ½ÃÀÛ Á÷ÈÄÀÇ arCell ¹è¿­Àº ´ÙÀ½°ú °°ÀÌ ÃʱâÈ­µÉ °ÍÀÌ´Ù.

°ÔÀÓ ÁøÇà Áß¿¡ »ç¿ëÀÚ°¡ 2¿Í 5ÀÇ Â¦À» ã¾Ò´Ù¸é NumÀÌ 2¿Í 5ÀÎ ¿ä¼ÒÀÇ St ¸â¹ö°¡ FLIPÀ¸·Î ¹Ù²ï´Ù. ¸ðµç ¿ä¼ÒÀÇ St¸â¹ö°¡ FLIPÀÌ µÇ¸é ¼û°ÜÁø ¸ðµç ¼ýÀÚ¸¦ ´Ù ãÀº °ÍÀ̹ǷΠ°ÔÀÓÀÌ ³¡³­´Ù. ³ª¸ÓÁö Àü¿ªº¯¼öµéÀÇ Àǹ̴ ºñ±³Àû °£´ÜÇÏ´Ù.

 

int nx,ny;

int count;

 

nx, ny´Â Ä¿¼­ÀÇ ÇöÀç À§Ä¡°ªÀ» °¡Áö¸ç ÃÖÃÊ (0,0)À¸·Î ÃʱâÈ­µÇ¾î ¿ÞÂÊ À§ÀÇ Ä­À» °¡¸®Å²´Ù. Ä¿¼­ À̵¿Å°¸¦ ´©¸¦ ¶§¸¶´Ù nx, ny¸¦ º¯°æÇÏ¿© »óÇÏÁ¿ì·Î À̵¿ÇÑ´Ù. ÀÌ ÁÂÇ¥°ªÀº È­¸é»óÀÇ ÁÂÇ¥°¡ ¾Æ´Ï¶ó arCell ¹è¿­»óÀÇ ÁÂÇ¥¶ó´Â Á¡À» ÁÖÀÇÇϵµ·Ï ÇÏÀÚ. Àü¿ªº¯¼öÀÇ Àǹ̴ óÀ½ºÎÅÍ ¸íÈ®ÇÏ°Ô Á¤ÀÇÇØ¾ß ÇÏ¸ç ¾Ö¸ÅÇÑ »óÅ·Π³²°Ü µÎ¾î¼­´Â ¾ÈµÈ´Ù. ºÐ¼®ÇÒ ¶§µµ Àǹ̸¦ »¡¸® ÆÄ¾ÇÇØ¾ß Çϴµ¥ nx, ny°¡ È­¸é ÁÂÇ¥¶ó°í À߸ø »ý°¢ÇÏ¸é ³í¸®°¡ ÀÌ»óÇÏ°Ô ²¿ÀÌ°Ô µÈ´Ù.

count´Â ´Ü¾î ¶æ ±×´ë·Î ½Ãµµ ȸ¼öÀÌ¸ç °ø¹é۸¦ ´­·¯ Ä­À» ÇÑ ¹ø µÚÁý¾î º¼ ¶§ ¶§¸¶´Ù Áõ°¡ÇÑ´Ù. ÀÌ °ªÀÌ ÀÛÀ»¼ö·Ï ÃÖ¼ÒÇÑÀÇ ½Ãµµ·Î ¸ðµç ¦À» ´Ù ãÀº °ÍÀ̹ǷΠ°ÔÀÓÀ» Àß ÇÏ´Â °ÍÀÌ´Ù. DrawScreen ÇÔ¼ö¿¡¼­ ÇöÀç count°ªÀ» È­¸éÀ¸·Î Ãâ·ÂÇÑ´Ù.

°ÔÀÓÀÌ °£´ÜÇϱ⠶§¹®¿¡ ÀÚ·á ±¸Á¶µµ ¹«Ã´ °£´ÜÇÏ´Ù. Àü¿ªº¯¼öµéÀÌ ¾î¶² Á¤º¸¸¦ ±â¾ïÇÏ´ÂÁö¿Í ÀÌ Á¤º¸¸¦ °ü¸®ÇÏ´Â ¹æ½ÄÀ» ÀÌÇØÇϸé ÇÁ·Î±×·¥ÀÇ ³í¸®¸¦ ½Å¼ÓÇÏ°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÚ·á ±¸Á¶¸¸ Á¦´ë·Î ÀÌÇØÇØµµ ÇÁ·Î±×·¥ÀÇ Àý¹ÝÀ» ÀÌÇØÇÑ °ÍÀÌ´Ù. °£´ÜÇÑ °ÔÀÓÀ» À§ÇÑ ÀÚ·á ±¸Á¶ ¼³°èÀÇ ¿¹¸¦ º¸¿´´Âµ¥ ¿©±â¼­ ÀÛ¼ºÇÑ ÀÚ·á ±¸Á¶°¡ ¹Ýµå½Ã ÃÖÀûÀÇ ¼³°èÀÎ °ÍÀº ¾Æ´Ï´Ù. ÀÚ·á ±¸Á¶´Â °íÁ¤µÈ °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ µ¿ÀÏÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´õ¶óµµ Á¶±Ý¾¿ ´Ù¸£°Ô ¼³°èÇÒ ¼ö ÀÖ´Ù.

¿¹¸¦ µé¾î arCell ±¸Á¶Ã¼ÀÇ Num ¸â¹ö¿¡ ±â¾ïµÇ´Â °ªÀÇ ¹üÀ§°¡ °íÀÛ 1~8±îÁöÀÎ ÀÛÀº Á¤¼ö¿¡ ºÒ°úÇϸç À½¼ö°ªÀÌ ±â¾ïµÇÁöµµ ¾Ê´Â´Ù. ±×·¡¼­ ±»ÀÌ 4¹ÙÀÌÆ®³ª µÇ´Â intÇüÀ» ½á¼­ ¸Þ¸ð¸®¸¦ ³¶ºñÇÒ ÇÊ¿ä¾øÀÌ short³ª charÇüÀ¸·Î ¼±¾ðÇÒ ¼öµµ ÀÖ´Ù. ±×·¯³ª ÀÌ·± ÀÛÀº ÇÁ·Î±×·¥¿¡¼­´Â ÀÌ Á¤µµ ¿ë·® Â÷À̰¡ º° Àǹ̰¡ ¾ø°í ¼ÓµµÂ÷µµ ¾ø±â ¶§¹®¿¡ ±×³É ¹«³­ÇÑ intÇüÀ» ¾²´Â °ÍÀÌ´Ù.