³ª. ÈĹæ Á¤·Ä °£¼ÒÈ­

¾Õ ½Ç½À¿¡¼­ ºÃ´Ù½ÃÇÇ ÆíÁýÀÌ ÀϾ nPos ¿ÀÇÁ¼ÂÀÇ Àü¹æ ÂÊÀº Á¤·Ä ½ÃÀÛÀ§Ä¡¸¸ Á¦´ë·Î ã´Â´Ù¸é ¿ÏÀüÈ÷ Á¤·ÄÀ» »ý·«ÇÏ°í ÀÌÀü Á¤·ÄÁ¤º¸¸¦ »ç¿ëÇصµ ÀüÇô ¹®Á¦µÉ °ÍÀÌ ¾ø¾ú´Ù. ±×·¯³ª ÈĹæ ÂÊÀ¸·Î´Â Á» ´Ù¸£´Ù. ±ÛÀÚ°¡ »ðÀÔ, »èÁ¦µÇ¾ú´Ù¸é ±× µÚÂÊÀÇ ¹®¼­´Â Ç×»ó º¯È­°¡ ÀÖÀ» ¼ö ¹Û¿¡ ¾øÀ¸¹Ç·Î Á¤·ÄÀ» »ý·«ÇÒ ¼ö ¾ø´Ù. ±×·¯³ª ÈĹæÀÇ º¯È­´Â Ç×»ó ÀÏÁ¤ÇÑ ±ÔÄ¢¿¡ µû¶ó ÀϾ±â ¶§¹®¿¡ ±ÔÄ¢¸¸ Á¤È®ÇÏ°Ô Ã£À¸¸é ÈĹæ Á¤·Äµµ ¸¹ÀÌ °£¼ÒÈ­ÇÒ ¼ö ÀÖ´Ù.

ÈĹæ Á¤·ÄÀÇ º¯È­ ±ÔÄ¢À» ÆľÇÇÏ´Â °ÍÀº ±×´ÙÁö ½±Áö ¾ÊÀºµ¥ ¸î °¡Áö ÄÉÀ̽º·Î ³ª´©¾î °¢ ÄÉÀ̽ºº°·Î ¾î¶² ½ÄÀ¸·Î ÀÌÀüÀÇ Á¤·ÄÁ¤º¸¸¦ ÀçÈ°¿ëÇÒ ¼ö ÀÖ´ÂÁö ¹æ¾ÈÀ» ¸ð»öÇغ¸µµ·Ï ÇÏÀÚ. ±ÔÄ¢ÀÌ ³ª¸§´ë·Î º¹ÀâÇϱ⠶§¹®¿¡ ±Û¸¸ Àо ÀÌÇØÇϱâ´Â ¹«Ã´ ¾î·Æ´Ù. Á÷Á¢ ¿¬½ÀÀå¿¡ ±×·Á °¡¸é¼­ ³»°¡ ÀÌ Äڵ带 ÀÛ¼ºÇÑ´Ù¸é ¾î¶² ½ÄÀ¸·Î ±ÔÄ¢À» ¹ß°ßÇÒ ¼ö ÀÖ´ÂÁö ¸ÕÀú »ý°¢Çغ¸µµ·Ï ÇÏÀÚ.

ÄÉÀ̽º1

°¡Àå ´Ü¼øÇÑ °æ¿ì·Î ÁÙ ³»¿¡¼­ »ðÀÔ, »èÁ¦°¡ ÀϾ ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ µ¿ÀÏÇÑ ÁöÁ¡¿¡¼­ À¯»çÇÑ ÆÐÅÏÀ» ãÀº °æ¿ìÀÌ´Ù. ¿©±â¼­ À¯»ç ÆÐÅÏÀ̶ó´Â ¿ë¾î´Â ±¸Ã¼ÀûÀ¸·Î ÀçÈ°¿ëÀÌ °¡´ÉÇÑ Á¤·ÄÁ¤º¸¸¦ ÀǹÌÇÑ´Ù. À¯»ç ÆÐÅÏÀ» ã±â¸¸ Çϸé Á¤·ÄÀ» ´Ù½Ã ÇÒ ÇÊ¿ä¾øÀÌ ±âÁ¸ÀÇ Á¤·ÄÁ¤º¸¸¦ ¾à°£¸¸ º¯°æÇÏ¸é µÈ´Ù.

ù ÁÙÀÇ Áß°£Âë¿¡¼­ 1¹ÙÀÌÆ®ÀÇ ¹®ÀÚ¸¦ »ðÀÔ(¶Ç´Â »èÁ¦)Çߴµ¥ ÀÌ ÆíÁýÀ¸·Î ÀÎÇØ Ã¹ ÁÙÀº ±æÀ̸¸ º¯°æµÇ¾úÀ¸¸ç Àüü ÁÙ ¼ö¿¡´Â º¯È­°¡ ¾ø´Ù°í ÇÏÀÚ. »ðÀÔ ÈÄ¿¡ ù ÁÙºÎÅÍ Á¤·ÄÀ» ´Ù½Ã ÇØ ¿À´Âµ¥ µÎ ¹ø° ÁÙÀ» Á¤·ÄÇÑ ÈÄ ÀÌÀü Á¤·Ä °á°ú¿Í ºñ±³¸¦ Çغ¸´Ï 1¹ÙÀÌÆ®¸¸Å­¾¿¸¸ Â÷ÀÌ°¡ ÀÖ°í ³ª¸ÓÁö´Â º¯È­°¡ ¾ø´Ù. Áï À¯»çÇÑ ÆÐÅÏÀ» ãÀº °ÍÀÌ´Ù. ÀÏ´Ü ÆÐÅÏÀ» ã¾ÒÀ¸¸é ÀÌÈÄ ¼¼ ¹ø° ÁÙºÎÅÍ´Â ÀÏÀÏÀÌ ´Ù½Ã Á¤·ÄÇÒ ÇÊ¿ä¾øÀÌ Start¿Í End¸¦ 1¾¿ Áõ°¡½ÃÄÑ Áֱ⸸ ÇÏ¸é µÈ´Ù.

¾ÆÁÖ ±¸Ã¼ÀûÀÎ ¿¹¸¦ µé¾î ÀÌ Á¤·Ä¹æ½Ä¿¡ ´ëÇØ ¼³¸íÇغ¸µµ·Ï ÇÏÀÚ. ´ÙÀ½ ±×¸²ÀÇ ¿ÞÂÊ ¹®¼­´Â ¸ðµÎ ´Ù¼¸ ÁÙ·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç °¢ ÁÙÀº ¸ðµÎ °³ÇàÄÚµå·Î °³ÇàµÇ¾î ÀÖ´Ù°í ÇÏÀÚ. ÀÌ »óÅ¿¡¼­ µÎ ¹ø° ÁÙ Áß°£¿¡ ¡®Z¡¯¹®ÀÚ¸¦ »ðÀÔÇÑ ÈÄÀÇ Á¤·Ä °úÁ¤À» »ó»óÇغ¸ÀÚ.

Àü¹æ Á¤·Ä »ý·« ±â´É¿¡ ÀÇÇØ Ã¹ ¹ø° ÁÙÀº ÀçÁ¤·ÄµÇÁö ¾Ê°í µÎ ¹ø° ÁÙºÎÅÍ Á¤·ÄÀÌ ½ÃÀ۵ȴÙ. µÎ ¹ø° ÁÙÀ» Á¤·ÄÇØ º» °á°ú Start´Â ±×´ë·ÎÀε¥ »ðÀÔµÈ Z¿¡ ÀÇÇØ End´Â 1 Áõ°¡ÇÏ¿© 10¿¡¼­ 11ÀÌ µÇ¾ú´Ù. ¼¼ ¹ø° ÁÙÀ» Á¤·ÄÇغ¸´Ï Start´Â 13ÀÌ µÇ¾ú°í End´Â 16ÀÌ µÇ´Âµ¥ ÀÌ °á°ú´Â ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ °°Àº ÁÙ¿¡¼­ 1¸¸Å­ ´õÇÑ °ªÀÌ´Ù. Áï ¼¼ ¹ø° ÁÙ ÀÌÈÄ´Â ¡®Z¡¯ÀÇ »ðÀÔ¿¡ ÀÇÇØ ¿ÀÇÁ¼Â¸¸ µÚ·Î À̵¿µÉ »Ó ÁÙÀÇ ±æÀÌ¿¡´Â º¯È­°¡ ¾øÀ¸¸ç ³× ¹ø° ÀÌÈĵµ ¸¶Âù°¡Áö´Ù. ¿©±â¼­ ¼¼ ¹ø° ÁÙ ÀÌÈÄ ¿ÀÇÁ¼ÂÀÇ Áõ°¡ºÐÀº »ðÀÔµÈ ¹®ÀÚ¿­ÀÇ ±æÀÌ¿Í °°´Ù´Â ±ÔÄ¢À» ¹ß°ßÇß´Ù.

ÀÌ »ç½ÇÀ» È®ÀÎÇß´Ù¸é ³× ¹ø° ÁÙºÎÅÍ´Â ±»ÀÌ GetLine ÇÔ¼ö¸¦ È£ÃâÇÏ¿© Á¤·ÄÀ» ´Ù½Ã ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç Start, End¸¸ 1¾¿ Áõ°¡½ÃÅ°¸é µÈ´Ù. Á» ´õ ÀϹÝÀûÀ¸·Î Á¤¸®ÇÑ´Ù¸é nCount°¡ »ðÀԵǾúÀ» ¶§(»èÁ¦½Ã´Â À½¼ö°ª) ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ °°Àº ÁÙ°ú ºñ±³ÇÏ¿© nCount¸¸Å­ ¿ÀÇÁ¼ÂÀÌ À̵¿µÈ ÁÙÀ» ãÀ¸¸é ±× ÀÌÈÄ ÁÙÀº °°Àº ¹æ½ÄÀ¸·Î ¿ÀÇÁ¼Â¸¸ Á¶Á¤ÇÏ¸é µÈ´Ù´Â °ÍÀÌ´Ù. ¹®¼­°¡ ¾Æ¹«¸® ±æ¾îµµ µÚÂÊ ÁÙÀº ¸ðµÎ ¿ÀÇÁ¼Â¸¸ ÀÏ°ý Á¶Á¤ÇÏ¸é µÈ´Ù.

ÄÉÀ̽º 2

ÀÌ °æ¿ì´Â ¹®ÀÚÀÇ »ðÀÔ¿¡ ÀÇÇØ ÁÙ ±æÀÌ°¡ ´Ã¾î³ª ´ÙÀ½ ÁÙ·Î ³»·Á°£ °æ¿ìÀÌ´Ù. ÀÌ·¸°Ô µÇ¸é µÎ ¹ø° ÁÙ ÀÌÈÄ°¡ ÇÑ ÁÙ¾¿ µÚ·Î ¹Ð¸®¸ç ÀÌÈÄÀÇ ¸ðµç ÁÙ¿¡¼­ ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ °°Àº ÁÙ°ú À¯»çÇÑ ÆÐÅÏÀÌ ¹ß°ßµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

±×·¯³ª ÀÚ¼¼È÷ º¸¸é ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ ¹Ù·Î ¾Õ ÁÙ°ú À¯»çÇÑ ÆÐÅÏÀÌ ¹ß°ßµÇ¸ç ÀÌ Á¤º¸¸¦ ÀçÈ°¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ ¾Õ ÁÙÀ» ÂüÁ¶ÇÏ¿© »ðÀÔµÈ ±æÀ̸¸Å­ ¿ÀÇÁ¼ÂÀ» À̵¿½ÃÅ°¸é ÀçÁ¤·ÄÇÏÁö ¾Ê¾Æµµ µÈ´Ù.

ÄÉÀ̽º 3

ÄÉÀ̽º 2ÀÇ ¹Ý´ë °æ¿ì·Î ÇÑ ¹®ÀÚ¸¦ »èÁ¦Çߴµ¥ ÁÙ ±æÀÌ°¡ ª¾ÆÁ³´Ù. Áï ù ¹ø° ÁÙ°ú µÎ ¹ø° ÁÙÀÌ ÇÕÃÄÁüÀ¸·Î½á ¼¼ ¹ø° ÁÙ ÀÌÈÄ°¡ ¸ðµÎ ¾ÕÀ¸·Î À̵¿ÇÏ¿´´Ù.

À̶§´Â ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ ¹Ù·Î ´ÙÀ½ ÁÙ°ú À¯»çÇÑ ÆÐÅÏÀÌ ¹ß°ßµÇ´Âµ¥ ÀÌ Á¤º¸µµ ¿ª½Ã ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. ¼¼ °¡Áö ÄÉÀ̽º ¸ðµÎ À¯»çÇÑ ÆÐÅÏÀ» ã¾Æ »ðÀÔ »èÁ¦µÈ ¿ÀÇÁ¼Â¸¸Å­ Start¿Í End¸¦ Á¶Á¤ÇÏ¸é µÈ´Ù. ¾î¶² °æ¿ìµµ nPara¿Í nLineÀº º¯ÇÏÁö ¾Ê´Â´Ù.

°³ÇàÄÚµå ÆíÁý

»ðÀÔ, »èÁ¦µÈ ¹®ÀÚ¿­¿¡ °³ÇàÄڵ尡 ÀÖ´Â °æ¿ì´Â ¹®´ÜÀÌ °­Á¦·Î ³ª´©¾îÁö±â ¶§¹®¿¡ ¹®Á¦°¡ ´Ù¸£´Ù. ±×·¯³ª ¸é¹ÐÇÏ°Ô °üÂûÇغ¸¸é °³ÇàÄڵ尡 »ðÀÔ, »èÁ¦µÇ¾ú´Ù°í ÇÏ´õ¶óµµ ¿©ÀüÈ÷ ¾ÕÀÇ ¼¼ ÄÉÀ̽º Áß Çϳª¿¡ ´ëÀÀµÈ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ¿Ö³ÄÇÏ¸é °³ÇàÄÚµå Çϳª¸¦ »ðÀÔ, »èÁ¦ÇÒ ¶§ ÇѲ¨¹ø¿¡ µÎ ÁÙ ÀÌ»óÀÌ ´Ã¾î³ª°Å³ª ÁÙ¾îµéÁö´Â ¾Ê±â ¶§¹®ÀÌ´Ù. ´ÙÀ½ ±×¸²À» º¸ÀÚ.

ÄÉÀ̽º¸¦ ³ª´©´Â ±âÁØÀº ÆíÁý ÈÄ À¯»çÇÑ ÆÐÅÏÀÌ ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ ¾îµðÂë¿¡¼­ ¹ß°ßµÇ¾ú´Â°¡ ÇÏ´Â Á¡ÀÌ´Ù. °³ÇàÄڵ尡 ÆíÁýµÈ °æ¿ì´Â ¹®´ÜÀÇ ¹øÈ£¿¡µµ º¯È­°¡ »ý±â¹Ç·Î nParaµµ ÀûÀýÈ÷ Á¶Á¤ÇØ¾ß ÇÑ´Ù. Á¶Á¤ÇÏ´Â ¹æ¹ýÀº °¢ ÄÉÀ̽ºº°·Î ´Ù¸£´Ù. nLineÀº ¾î¶² °æ¿ì¶óµµ º¯°æµÇÁö ¾ÊÀ¸¹Ç·Î ±×´ë·Î µÎ°Å³ª ´Ü¼ø º¹»çÇÏ¸é µÈ´Ù.

±×·³ ÀÌÁ¦ ¾Õ¿¡¼­ ¿¬±¸Çغ» ´ë·Î ½ÇÁ¦ ÄÚµå·Î ÀÛ¼ºÇغ¸ÀÚ. ÄÉÀ̽º¸¦ ÆǺ°ÇÏ´Â Á¶°ÇÀÌ ´Ù¼Ò º¹ÀâÇÏ°í ¹ß°ß ÈÄ Á¤·ÄÁ¤º¸¸¦ °¡°øÇÏ´Â Äڵ尡 ±æ±â ¶§¹®¿¡ º¸´Ù½ÃÇÇ ±²ÀåÈ÷ ±æ¾îÁ³°í º¹ÀâÇØÁ³´Ù.

 

void UpdateLineInfo(int nPos/*=-1*/, int nCount/*=-1*/)

{

     int l,s,e;

     int nPara, nLine=0;

     int i;

     int ParaStart;

    int ps=-1,pe=-1,pp=0;

    int dPara;

 

     if (nPos==-1) {

          l=0;

          nPara=0;

     } else {

          ParaStart=FindParaStart(nPos);

          if (ParaStart == 0) {

              l=0;

              nPara=0;

          } else {

              GetRCFromOff(ParaStart-2,l,e);

              nPara=pLine[l].nPara+1;

              l++;

          }

     }

 

     for (;;l++) {

          if (l >= Linelen) {

              Linelen += 1000;

              pLine=(tagLine *)realloc(pLine,sizeof(tagLine)*Linelen);

              if (pLine == NULL) {

              }

              for (i=Linelen-1000;i<Linelen;i++) {

                   pLine[i].Start=-1;

              }

          }

 

          GetLine(l,s,e);

        if (nPos != -1 && e > nPos && pLine[l].Start != -1) {

           if (pLine[l].Start+nCount == s && pLine[l].End+nCount == e) {

               dPara=nPara-pLine[l].nPara;

               for (i=l;;i++) {

                   if (pLine[i].Start==-1)

                       break;

                   pLine[i].Start+=nCount;

                   pLine[i].End+=nCount;

                   pLine[i].nPara+=dPara;

               }

               break;

           }

 

           if (ps+nCount == s && pe+nCount == e) {

               if (TotalLine+1 >= Linelen) {

                   Linelen += 1000;

                   pLine=(tagLine *)realloc(pLine,sizeof(tagLine)*Linelen);

                   if (pLine == NULL) {

                   }

                   for (i=Linelen-1000;i<Linelen;i++) {

                       pLine[i].Start=-1;

                   }

               }

               dPara=nPara-pp;

               pLine[TotalLine+1].Start=-1;

               for (i=TotalLine;i>=l;i--) {

                   pLine[i].Start=pLine[i-1].Start+nCount;

                   pLine[i].End=pLine[i-1].End+nCount;

                   pLine[i].nPara=pLine[i-1].nPara+dPara;

                   pLine[i].nLine=pLine[i-1].nLine;

               }

               pLine[l].Start=s;

               pLine[l].End=e;

               pLine[l].nPara=nPara;

               pLine[l].nLine=nLine;

               TotalLine++;

               break;

           }

          

           if (pLine[l+1].Start+nCount == s && pLine[l+1].End+nCount == e) {

               dPara=nPara-pLine[l+1].nPara;

               for (i=l;;i++) {

                   if (pLine[i+1].Start==-1) {

                       pLine[i].Start=-1;

                       break;

                   }

                   pLine[i].Start=pLine[i+1].Start+nCount;

                   pLine[i].End=pLine[i+1].End+nCount;

                   pLine[i].nPara=pLine[i+1].nPara+dPara;

                   pLine[i].nLine=pLine[i+1].nLine;

               }

               TotalLine--;

               break;

           }

        }

 

        ps=pLine[l].Start;

        pe=pLine[l].End;

        pp=pLine[l].nPara;

 

          pLine[l].Start=s;

          pLine[l].End=e;

          pLine[l].nPara=nPara;

          pLine[l].nLine=nLine;

          if (s==-1) {

              TotalLine=l;

              if (MarginWidth != 0) {

                   if (nPara >= 9999 && MarginWidth==25) {

                        MarginWidth=32;

                        SendMessage(hWndMain,WM_SIZE,0,0);

                        Invalidate(-1);

                   }

                   if (nPara < 9999 && MarginWidth==32) {

                        MarginWidth=25;

                        SendMessage(hWndMain,WM_SIZE,0,0);

                        Invalidate(-1);

                   }

              }

              break;

          }

 

          if (buf[e]==¡®\r¡¯) {

              nPara++;

              nLine=0;

          } else {

              nLine++;

          }

     }

}

 

¸î °¡Áö º¯¼ö°¡ Ãß°¡µÇ¾ú°í GetLine È£Ãâ ÈÄ ¼¼ °¡Áö ÄÉÀ̽º¿¡ ÇØ´çÇÏ´ÂÁö Á¡°ËÇÑ ÈÄ Á¤·Ä ´ë½Å ¹öÆÛ¸¦ Á¶ÀÛÇÏ´Â Äڵ尡 ÀÖ´Ù. GetLine ¹Ù·Î ´ÙÀ½¿¡ ÀÖ´Â if¹®Àº ÈĹæ Á¤·Ä °£¼ÒÈ­¸¦ ÇÒ °ÍÀΰ¡¸¦ ÆÇ´ÜÇϴµ¥ ÀÏ´Ü nPos°¡ -1À̸é Àüü Á¤·ÄÀ» ÇÏ´Â °ÍÀ̹ǷΠÁ¶°ÇµéÀ» »ìÆ캼 ÇÊ¿ä°¡ ¾ø´Ù. ±×¸®°í Á¤·Ä ½ÃÀÛ ÁÙÀÇ ³¡ÀÌ Á¤·Ä ½ÃÀÛ ¿ÀÇÁ¼ÂÀÎ nPosº¸´Ù Ŭ ¶§¸¸ °£¼ÒÈ­¸¦ Çϴµ¥ ´ÙÀ½°ú °°Àº °æ¿ì¸¦ ¿¹¹æÇϱâ À§Çؼ­ÀÌ´Ù.

¹®´ÜÀÇ ¼¼ ¹ø° ÁÙÀÌ ÆíÁýµÇ¾ú´Âµ¥ À̶§ Á¤·Ä ½ÃÀÛÀ§Ä¡´Â ¹®´ÜÀÇ Ã¹ ÁÙºÎÅÍ°¡ µÈ´Ù. ù ÁÙÀº ÆíÁýÀÌ ÀϾ À§Ä¡º¸´Ù ÀÌÀü¿¡ ÀÖ´Â ÁÙÀ̹ǷΠÀÌ ÁÙÀ» Á¤·ÄÇÒ ¶§´Â ¾ÆÁ÷ ÈĹæ Á¤·Ä °£¼ÒÈ­¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÃÖ¼ÒÇÑ ÆíÁýÀÌ ÀϾ ÁÙ ÀÌÈĺÎÅÍ Á¶°ÇÀ» Á¡°ËÇØ º¼ ÇÊ¿ä°¡ ÀÖ´Â °ÍÀÌ´Ù. ¶ÇÇÑ Á¤·Ä ·çÇÁ´Â GetLine¿¡ ÀÇÇØ Á¶»çµÈ s°¡ -1ÀÏ ¶§, Áï ¸ðµç ÁÙÀ» ´Ù Á¤·ÄÇÒ ¶§±îÁö ¹Ýº¹µÇ´Âµ¥ ³¡ÁÙÀÎ °æ¿ì´Â ´õ ÀÌ»ó Á¶°Ç Á¡°ËÀ» ÇÒ ÇÊ¿ä°¡ ¾øÀ» »Ó¸¸ ¾Æ´Ï¶ó s ¿Í e°¡ ½ÇÁ¦ ¿ÀÇÁ¼ÂÀÌ ¾Æ´Ñ -1°ªÀ» °¡Áö¹Ç·Î Á¶°Ç¹®µéÀÌ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â ¹®Á¦°¡ ÀÖ´Ù. e>nPos Á¶°Ç¹®Àº e°¡ -1ÀÏ ¶§´Â Á¶°Ç Á¡°ËÀ» ÇÏÁö ¾Êµµ·Ï ÇÑ´Ù.

ÈĹæ Á¤·Ä °£¼ÒÈ­ÀÇ ¸¶Áö¸· Á¶°ÇÀÎ pLine[l].Start != -1Àº »õ·Î ÇÒ´çµÈ ÁÙ¿¡ ´ëÇØ °£¼ÒÈ­¸¦ ¹æÁöÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. realloc¿¡ ÀÇÇØ »õ·Î ÇÒ´çµÈ ÁÙÀº ¾ÆÁ÷ Á¤·ÄÀÌ µÇÁö ¾ÊÀº »óÅÂÀ̹ǷΠÀÌÀü Á¤º¸¿Í ºñ±³ÇÑ´Ù´Â °ÍÀÌ Àǹ̰¡ ¾ø´Ù. ¸¸¾à pLineÀ» ÀçÇÒ´çÇÒ ¶§ Start¸¦ -1·Î ÃʱâÈ­ÇÏÁö ¾ÊÀ¸¸é ¸±¸®Áî ¹öÀüÀÇ °æ¿ì Start´Â 0À¸·Î ÃʱâÈ­µÈ´Ù. ÀÌ »óÅ¿¡¼­ ±ä ÅؽºÆ®¸¦ ºÙ¿©³Ö°Å³ª ÆÄÀÏ¿¡¼­ Àоî¿À°Ô µÇ¸é ÁÙ ³¡¿¡¼­ ÄÉÀ̽º1ÀÇ Á¶°ÇÀÌ ¿ì¿¬È÷ ¸¸Á·µÇ´Âµ¥ À̶§ ¹®¼­ ³¡À» ãÀ» ¶§±îÁö ÁÙ Á¤º¸ º¹»ç¸¦ ½ÃµµÇÏ°Ô µÈ´Ù. Start°¡ -1·Î ÃʱâÈ­µÇÁö ¾ÊÀº »óÅ¿¡¼­´Â ¹è¿­¹üÀ§¸¦ ³Ñ¾î¼­°Ô µÇ°í °á±¹ ÇÁ·Î±×·¥ÀÌ ´Ù¿îµÇ´Â Ä¡¸íÀûÀÎ ¹®Á¦°¡ µÈ´Ù.

»ó±â ¼¼ Á¶°ÇÀÌ ¸¸Á·µÇ¸é ÇÑ ÁÙÀ» Á¤·ÄÇÑ °á°ú¿Í ÀÌÀü Á¤·ÄÁ¤º¸¸¦ ºñ±³ÇØ º»´Ù. ºñ±³ÇÏ´Â ¹æ½Ä°ú Á¤·ÄÁ¤º¸¸¦ º¹»çÇÏ´Â ¹æ½ÄÀº ÄÉÀ̽ºº°·Î ´Ù¸£´Ù. ¾Õ¿¡¼­ ¼³¸íÇÑ ¼¼ °¡Áö ÄÉÀ̽º°¡ ¼ø¼­´ë·Î if ºí·ÏÀ¸·Î ÀÛ¼ºµÇ¾î Àִµ¥ ¼ø¼­´ë·Î º¸µµ·Ï ÇÏÀÚ.

ÀÌÀü Á¤·ÄÀÇ µ¿ÀÏÇÑ ÁÙ°ú °°Àº °æ¿ì

ÄÉÀ̽º 1ÀÇ °æ¿ìÀε¥ ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ °°Àº ÁÙ¿¡¼­ À¯»çÇÑ ÆÐÅÏÀ» ã¾Ò´Ù. ÀÌ Á¶°ÇÀ» ÆǺ°ÇÏ´Â if¹®¿¡¼­ pLine ¹è¿­Àº ÀÌÀü Á¤·ÄÁ¤º¸ÀÌ°í »õ·Î Á¶»çÇÑ s, e´Â »õ Á¤·ÄÁ¤º¸Àε¥ ÀÌ µÎ °ªÀÌ nCount¸¸Å­ Â÷ÀÌ°¡ ÀÖ´ÂÁö ºñ±³Çغ¸¾Ò´Ù. ¹®¼­ÀÇ Àüü ÁÙ ¼ö´Â º¯È­°¡ ¾øÀ¸¸ç ÀÌ ÁÙ ÀÌÈÄÀÇ ¸ðµç Á¤·ÄÁ¤º¸´Â nCount¸¸Å­ ¿ÀÇÁ¼ÂÀ» À̵¿½ÃÄÑ¾ß ÇÑ´Ù. nLineÀº º¯È­°¡ ¾øÀ¸¸ç nPara´Â Áö±Ý Á¤·Ä »óÅÂÀÇ nPara¿Í ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ nParaÀÇ Â÷ÀÎ dPara¸¸Å­ ´õÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î ÀÌÀü Á¤·Ä »óÅ¿¡¼­´Â 5¹ø ¹®´ÜÀ̾ú´Âµ¥ ´Ù½Ã Á¤·ÄÇØ º» °á°ú nPara°¡ 6À̶ó¸é ÀÌÈÄ ¸ðµç ¹®´ÜÀÇ ¹øÈ£´Â 1¾¿ Áõ°¡ÇØ¾ß ÇÑ´Ù.

pLine ¹è¿­ÀÇ µ¿ÀÏÇÑ Ã·ÀÚ³¢¸® ¿ÀÇÁ¼Â À̵¿¸¸À¸·Î ÀçÁ¤·ÄÀ» ÇÒ ¼ö ÀÖ´Â °¡Àå ´Ü¼øÇÑ ÇüÅÂÀÌ´Ù. ÇÑ ÁÙ ³»¿¡¼­¸¸ ÆíÁýµÇ´Â °æ¿ìÀÌ¸ç ¹ß»ý ºóµµµµ °¡Àå ³ô°í 󸮵µ ´Ü¼øÇÏ¿© ÀÌ Ã³¸®¸¸ Çصµ Á¤·Ä ¼Óµµ°¡ ±²ÀåÈ÷ »¡¶óÁø´Ù.

ÀÌÀü Á¤·ÄÀÇ ¾ÕÁÙ°ú °°Àº °æ¿ì

ÄÉÀ̽º 2ÀÇ °æ¿ìÀ̸ç ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ ¾Õ ÁÙ¿¡¼­ À¯»çÇÑ ÆÐÅÏÀ» ã¾Ò´Ù. ±×·±µ¥ ÀÌ Á¶°Ç ºñ±³´Â ±×´ÙÁö ½±Áö°¡ ¾Ê´Ù. ¿Ö³ÄÇϸé pLine ¹è¿­Àº Çϳª¹Û¿¡ ¾ø°í »õ·Î¿î Á¤·ÄÁ¤º¸¸¦ ¸¸µå´Â Áß¿¡ ¾Õ ÁÙÀÇ Á¤·ÄÁ¤º¸°¡ Æı«µÇ¾î ¹ö·È±â ¶§¹®ÀÌ´Ù. ±×·¡¼­ ¾Õ ÁÙ°ú ºñ±³¸¦ Çϱâ À§ÇØ ps, pe, pp Àӽà º¯¼ö°¡ ÇÊ¿äÇÏ´Ù. ÇÑ ÁÙÀ» Á¤·ÄÇÒ ¶§¸¶´Ù ÀÌ º¯¼ö¿¡ Á¤·Ä »óŸ¦ º°µµ·Î ¹é¾÷ÇØµÎ¸é ´ÙÀ½ ÁÙÀ» Á¤·ÄÇÒ ¶§ ÀÌ º¯¼ö°ªÀÌ °ð ÀÌÀü ÁÙÀÇ Á¤·ÄÁ¤º¸°¡ µÈ´Ù. Áï ´ÙÀ½ ÁÙ Á¤·Ä½Ã À¯»ç ÆÐÅÏÀ» ã±â À§ÇÑ ºñ±³ ´ë»óÀÌ´Ù.

ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ ¾Õ ÁÙÀÌ ÇöÀç ÁÙ°ú À¯»ç ÆÐÅÏÀ̶ó´Â °ÍÀº Áö±Ý Á¤·ÄÇÑ °á°ú Áß°£¿¡ ÇÑ ÁÙÀÌ »ðÀԵǾú´Ù´Â ¶æÀÌ´Ù. µû¶ó¼­ ÀÌÈÄÀÇ ¸ðµç Á¤·ÄÁ¤º¸´Â pLine ¹è¿­ÀÇ ÇÑ Ä­ ¾Æ·¡·Î º¹»çµÇ¾î¾ß ÇÑ´Ù. À̶§ º¹»çÀÇ ¹æÇâÀº À§¿¡¼­ ¾Æ·¡·Î°¡ ¾Æ´Ï¶ó ¾Æ·¡¿¡¼­ À§·Î¿©¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î lÀÌ 10À̾ú´Ù°í ÇÏÀÚ. ±×·¯¸é 10ÁÙ Á¤º¸¸¦ 11¿¡ ¾²°í 11ÁÙ Á¤º¸¸¦ 12¿¡ ¾²°í ÀÌ·± ½ÄÀ¸·Î º¹»çÇÒ ¼ö ¾ø´Ù. 10ÁÙ Á¤º¸¸¦ 11¿¡ ¾²´Â ¼ø°£ 11ÀÇ Á¤º¸´Â 10ÁÙ°ú °°¾ÆÁö¹Ç·Î 12°¡ ´ëÀÔ¹Þ´Â Á¤º¸´Â ÀÌ¹Ì Æı«µÈ °ÍÀÌ´Ù.

±×·¡¼­ ¹®¼­ÀÇ ³¡¿¡¼­ºÎÅÍ l±îÁö Á¤·ÄÁ¤º¸¸¦ °Å²Ù·Î º¹»çÇØ ¿Â´Ù. ¸¶Áö¸·À¸·Î l¹ø° ÁÙÀº º¹»çÇÒ ÇÊ¿ä¾øÀÌ ¹æ±Ý GetLine ÇÔ¼ö°¡ Á¤·ÄÇÑ °á°ú¸¦ ´ëÀÔ¹ÞÀ¸¸é µÈ´Ù. Áß°£¿¡ ÇÑ ÁÙÀÌ »ðÀԵǾúÀ¸¹Ç·Î TotalLineÀº 1Áõ°¡ÇØ¾ß Çϴµ¥ ÀÌ Á¡ÀÌ ¶Ç ¹®Á¦°¡ µÈ´Ù. pLine ¹è¿­ÀÌ ÀÌÀü Á¤·Ä »óÅ¿¡¼­ ¹®¼­ Å©±â¿Í ²À ¸Â¾Ò´Ù¸é 1Áõ°¡ÇÑ ÇöÀç´Â Çϳª°¡ ¸ðÀÚ¶ó°Ô µÈ´Ù. ±×·¡¼­ Á¤·ÄÁ¤º¸ º¹»ç¸¦ ½ÃÀÛÇϱâ Àü¿¡ pLine ¹è¿­ÀÇ Å©±â°¡ ÃæºÐÇÑÁö Á¡°ËÇغ¸°í ¸ðÀÚ¶ó¸é ÀçÇÒ´çÇÏ¿© ´Ã·Á ÁÖµµ·Ï ÇÏ¿´´Ù.

ÀÌÀü Á¤·ÄÀÇ µÞÁÙ°ú °°Àº °æ¿ì

ÄÉÀ̽º 3ÀÇ °æ¿ìÀ̸ç ÀÌÀü Á¤·ÄÁ¤º¸ÀÇ µÞÁÙ¿¡¼­ À¯»çÇÑ ÆÐÅÏÀ» ã¾Ò´Ù. ÀÌ Á¶°ÇÀº Á¡°ËÇϱⰡ ºñ±³Àû ½±´Ù. Áö±Ý Á¤·ÄÇÑ °á°ú°¡ ÀÌÀü Á¤·ÄÇÑ °á°úÀÇ µÞÁÙ°ú °°´Ù¸é Áß°£¿¡ ÇÑ ÁÙÀÌ »ç¶óÁø °ÍÀÌ´Ù. ±×·¡¼­ ÀÌÈÄÀÇ ¸ðµç Á¤·ÄÁ¤º¸´Â pLine ¹è¿­ÀÇ ÇÑ Ä­ À§·Î º¹»çµÇ¾î¾ß ÇÑ´Ù. µÞÁÙÀÇ Á¤·ÄÁ¤º¸´Â ¾ÆÁ÷ pLine ¹è¿­¿¡ °í½º¶õÈ÷ ³²¾Æ ÀÖÀ¸¹Ç·Î º¹»çÇϱ⵵ ¾ÆÁÖ ½±´Ù. Á¤·ÄÇÑ °á°ú TotalLineÀº 1 °¨¼ÒÇϴµ¥ ÁÙ ¼ö°¡ ÁÙ¾îµå´Â °ÍÀº ¹®Á¦°¡ µÇÁö ¾ÊÀ¸¹Ç·Î pLine ¹è¿­ÀÇ Å©±â´Â °ü¸®ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.

 

ÀÌÁ¦ ¾Æ¹«¸® Å« ÆÄÀÏÀ» ÆíÁýÇÏ´õ¶óµµ ÀçÁ¤·ÄÇÏ´Â ¹üÀ§°¡ ±â²¯ÇØ¾ß 10ÁÙ ¹Ì¸¸À̱⠶§¹®¿¡ Á¤·Ä¿¡ ½Ã°£À» °ÅÀÇ »¯±âÁö ¾ÊÀ¸¸ç ÆíÁý¼Óµµ´Â ÆÄÀÏ Å©±â¿¡ ¹«°üÇÏ°Ô ÀÏÁ¤ÇÒ °ÍÀÌ´Ù.