Optimize (ÃÖÀûÈ­)

ÃÖÀûÈ­¶õ? "½Ã°£ ¶Ç´Â ¸Þ¸ð¸®¸¦ È¿À²ÀûÀ¸·Î ¹Ù²Ù´Â °Í"

´ÙÀ̳ª¹Í ÇÁ·Î±×·¡¹Ö ¹× ´Ù¸¥ ¾Ë°í¸®Áò¿¡¼­ »©³õÀ» ¼ö ¾ø´Â ºÎºÐÀ̱⵵ ÇÏÁö¿ä.

"¾Ë°í¸®Áò°úÀÇ ½Î¿òÀº ½Ã°£ ½Î¿òÀÌ´Ù."¶ó´Â ¸»Ã³·³, ºü¸¥ ¼Óµµ¸¸Å­ ±× ¾Ë°í¸®ÁòÀº ÃÖÀûÈ­°¡ ÀߵǾîÀÖ´Ù º¸¸é ÁÁ½À´Ï´Ù.

(¿Â¶óÀÎ ÀúÁö »çÀÌÆ®ÀÇ Ã¤Á¡ ¼Óµµ 0.01ÃÊ Â÷ÀÌ°¡ ¾Æ´Ñ, ½Ã°£ ÃÊ°ú ¼Ò½º¸¦ ½Ã°£ÃÊ ³»·Î µé¾î¿À´Â Â÷ÀÌÁ¤µµ? ^^;)

´ÙÀ½ ¹®Á¦¸¦ ÀÌ¿ëÇØ ÃÖÀûÈ­¸¦ ½ÃµµÇغ¸°Ú½À´Ï´Ù.

1. ¼Óµµ¸¦ ºü¸£°Ô ÇÒ ¼ö ¾øÀ»±î? ¹Ýº¹¹®ÀÇ È½¼ö¸¦ ÁÙÀδٴ °ÍÀº ½ÇÇà Ƚ¼ö°¡ ÁÙ¾îµé°í, ¼ÓµµÀÇ Çâ»óÀ¸·Î ¹Ù·Î ¿¬°áµË´Ï´Ù.

À̹ø ¹®Á¦¿¡¼­´Â ¾î¶»°Ô ½Ã°£À» ÁÙÀÏ ¼ö ÀÖÀ»±î¿ä?

=> Á¡È­½Ä´ë·Î Çؼ­ i¿Í j¸¦ ÀÌ¿ëÇØ ¹Ýº¹¹®À» µ¹¸®´Âµ¥ ½Ã°£ÃÊ°ú°¡ ³ª¿ä.

ºÐ¸í À§ÀÇ ´ÙÀ̳ª¹Í ¹®Á¦´Â, i¿Í jÀÇ ¹Ýº¹¹®À» ÀÌ¿ëÇϱ⠶§¹®¿¡ O(N^2) ÀÌ»óÀÇ È¿À²À» ã±â Èûµì´Ï´Ù.

ÇÏÁö¸¸, ¼Ò¼öÀÇ Æ¯¼ºÀ¸·Î ¹Ýº¹¹®ÀÇ È½¼ö¸¦ Å©°Ô ÁÙ¿©ÁÙ ¼ö ÀÖ´Ù¸é ¾î¶³±î¿ä?

if ( not_prime( i ) ) continue;
   

´ÙÀ½°ú °°Àº ¹®ÀåÀ» j°¡ µ¹±â Àü¿¡ ½áÁشٸé, iÀÇ ¹Ýº¹È½¼ö°¡ 10000¹ø¿¡¼­ 1229¹øÀ¸·Î ÁÙ°Ô µÇ°ÚÁÒ??

(10000±îÁöÀÇ ¼Ò¼öÀÇ °³¼ö´Â 1229°³ÀÔ´Ï´Ù. ^^)

Æò±Õ 1¾ï¹øÀÇ È½¼ö¸¦ 1ÃÊ Ä¿Æ®¶óÀÎÀ¸·Î »ý°¢ÇÏ°í ÇÁ·Î±×·¥À» §´Ù¸é, ÇÁ·Î±×·¥À» Çϴµ¥ µµ¿òÀÌ ¸¹ÀÌ µË´Ï´Ù.

10000 * 10000 (1¾ï) À» 1229 * 10000 (¾à 1230¸¸) ¹øÀ¸·Î ÁÙ¿´´Ù¸é, 8¹èÁ¤µµ »¡¶óÁö°Ú±º¿ä!

(¹°·Ð ÃÖÀûÈ­¿¡ µû¸¥ Á¡È­½Ä ¼öÁ¤Àº ÃæºÐÈ÷ »ý°¢Çغ¸½Ã±æ ¹Ù¶ø´Ï´Ù. ^^)

=> Á¡È­½ÄÀº ÀÌÇØ°¡ µÇ´Âµ¥, nÀ» ¾îµð¼­ºÎÅÍ ¾îµð±îÁö µ¹·Á¾ßµÉÁö ¸ô¶ó¼­ 10000ºÎÅÍ 1±îÁö µ¹·È¾î¿ä.

À§ÀÇ °æ¿ì¿¡´Â ¾Æ¹«·± ÃÖÀûÈ­°¡ ¾ÈµÇ¾îÀÖÀ» ¶§ ¾Æ½½¾Æ½½ÇÏ°Ô Åë°úÇϰųª, ½Ã°£ÃÊ°ú¿¡ °É¸± À§ÇèÀÌ ÀÖ½À´Ï´Ù.

ÀÌ·¯¸é ¾î¶³±î¿ä? ÇöÀç±îÁö ±¸ÇÑ ¼Ò¼öÀÇ ÇÕ Áß Ãִ븦 ¹Ì¸® ÀúÀåÇß´Ù°¡, ¹Ýº¹¹®À» µ¹¸± ¶§ »ç¿ëÇÏ´Â °Ì´Ï´Ù.

¿¹¸¦ µé¾î, 7À» µ¹¸± ¶§ ±× Àü¿¡ ÀÖ´ø ¸ðµç ¼Ò¼öÀÇ ÃÑ ÇÕÀÎ (2+3+5 = 10) À» ÀúÀåÇسõ°í, °Å±â¼­ºÎÅ͸¸ µ¹¸®´Â °Ì´Ï´Ù.

for(j=0; j<=max ; j++)
{
//³»¿ë
}
   
±×·¯¸é ÇÁ·Î±×·¥À» µ¹¸®´Â Ƚ¼öµµ Å©°Ô ÁÙ¾îµé ¼ö ÀÖ°ÚÁÒ?? Àú´Â °ÅÀÇ Àý¹ÝÁ¤µµ ÁÙ¾îµé¾ú³×¿ä. ^^

ÃÖÀûÈ­´Â ¾î´À °÷¿¡¼­µµ À¯¿ëÇÏ°í, ±× ¹æ¹ýµµ ´Ù¾çÇÕ´Ï´Ù.

¾ÈÀüÇÑ Åë°ú¸¦ ³ë¸°´Ù¸é, ÇÊ¿ä¾ø´Â ºÎºÐÀº °ú°¨ÇÏ°Ô À߶óÁÖ´Â °¡ÁöÄ¡±â °úÁ¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

ÄÚµùÀ» ÇϱâÀü¿¡ ÇÊ¿ä¾ø´Â ºÎºÐÀ» »ç¿ëÇÏÁö ¾ÊÀ¸·Á´Â °í¹ÎÀ» Çغ¸´Â °Ç ¾î¶³±î¿ä?

Ãâó:pl0892029

[ȨÀ¸·Î]  [µÚ ·Î]