ÇÁ·Î±×·¥À» ÀÛ¼ºÇϴ ù ´Ü°è´Â ÀÌ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÒ ÀÚ·á ±¸Á¶¸¦ ¼³°èÇÏ´Â °ÍÀÌ´Ù. Ç¥ÇöÇϰíÀÚ ÇÏ´Â Á¤º¸¸¦ °¡Àå È¿À²ÀûÀ¸·Î ÀúÀåÇÏ°í °ü¸®ÇÒ ¼ö ÀÖ´Â ÀÚ·á ±¸Á¶¸¦ ¼±ÅÃÇØ¾ß ¾Ë°í¸®ÁòÀÌ °£´ÜÇØÁö°í ±¸Á¶°¡ Æ°Æ°ÇØÁø´Ù. ¹Ý¸é ÀÚ·á ±¸Á¶¸¦ À߸ø ¼±ÅÃÇÏ¸é ¾Ë°í¸®ÁòÀÌ º¹ÀâÇØÁö°í ±¸Á¶°¡ ÁöÀúºÐÇØÁ®¼ ¿À·ù°¡ ¸¹¾ÆÁö°í È®ÀåÇϱ⵵ ¾î·Á¿öÁø´Ù. ¼Ò½º¸¦ ºÐ¼®Çϴ ù ´Ü°è´Â ÇÁ·Î±×·¥ Àü¹Ý¿¡ °ÉÃÄ ¿µÇâ·ÂÀ» Çà»çÇÏ´Â Àü¿ªº¯¼ö¸¦ ºÐ¼®ÇÏ´Â °ÍÀ̸ç Àü¿ªº¯¼ö°¡ ÀûÀ»¼ö·Ï ºÐ¼®Çϱ⠽±´Ù.
¦ã±â °ÔÀÓÀÇ °ÔÀÓÆÇÀº ¼ýÀÚµéÀÌ ¼û¾î ÀÖ´Â ¿©·¯ °³ÀÇ ÄÀ¸·Î ±¸¼ºµÇ´Âµ¥ °¢ Ä¿¡ ¾î¶² ¼ýÀÚ°¡ ¼û°ÜÁ® ÀÖ´ÂÁö¸¦ ÀúÀåÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ °¢ ÄÀº ã¾Ò°Å³ª ¾ÆÁ÷ ¸øÃ£¾Ò°Å³ª ¾Æ´Ï¸é ã±â À§ÇØ Àӽ÷Π¿·È°Å³ª ¼Â Áß ÇϳªÀÇ »óŸ¦ °¡Áø´Ù. ¼ýÀÚ¿Í »óÅ µÎ °¡Áö Á¤º¸¸¦ ÇѲ¨¹ø¿¡ Ç¥ÇöÇØ¾ß ÇÏ¹Ç·Î Ä Çϳª´Â ´ÙÀ½ ±¸Á¶Ã¼·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Ù.
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ÇüÀ»
¾²´Â °ÍÀÌ´Ù.