´Ù. Çà·Ä °è»ê

ij·µÀÌ °³ÇàµÈ Áٷεµ À̵¿ÇÏ·Á¸é ÇöÀç À§Ä¡ off°¡ È­¸é»óÀÇ ¾îµðÂë¿¡ ÇØ´çÇÏ´ÂÁö ÁÂÇ¥¸¦ ãÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ Ä¿¼­À̵¿Å°·Î ij·µÀ» À̵¿ÇÏ·Á¸é ¿ÀÇÁ¼ÂÀ¸·ÎºÎÅÍ ÁÙ°ú Ä­ ¹øÈ£¸¦ ãÀ» ¼öµµ ÀÖ¾î¾ß ÇÑ´Ù. ¹®Á¦´Â ¸Þ¸ð¸®»ó¿¡¼­´Â Ä­°ú ÁÙ(¶Ç´Â Çà°ú ¿­)ÀÇ °³³äÀÌ ¾ø´Ù´Â °ÍÀÌ´Ù. buf´Â ¿ÀÇÁ¼Â¸¸À¸·Î À§Ä¡¸¦ ±â¾ïÇÏ´Â ÀÏÂ÷¿øÀûÀÎ ±¸Á¶Àε¥ ºñÇØ È­¸éÀº ¸Þ¸ð¸®¿Í´Â ´Þ¸® ÁÙ°ú Ä­ÀÇ °³³äÀÌ ÀÖ´Â ÀÌÂ÷¿øÀûÀÎ Çà·Ä ±¸Á¶·Î µÇ¾î ÀÖ´Ù. ±×·¡¼­ ¿ÀÇÁ¼ÂÀ¸·ÎºÎÅÍ Çà·Ä°ªÀ» ±¸ÇÒ ¼ö ÀÖ¾î¾ß ÇÏ°í ¹Ý´ë·Î Çà·Ä°ªÀ¸·ÎºÎÅÍ ´ëÀÀµÇ´Â ¿ÀÇÁ¼ÂÀ» ±¸ÇÒ ¼öµµ ÀÖ¾î¾ß Çϴµ¥ ´ÙÀ½ µÎ ÇÔ¼ö°¡ ÀÌ °è»êÀ» ÇÑ´Ù.

 

void GetRCFromOff(int nPos, int &r, int &c)

{

     int s,e;

     TCHAR *p=buf;

     r=0;

 

     while (p-buf != nPos) {

          if (*p==¡®\r¡¯)

               r++;

          p++;

     }

     GetLine(r,s,e);

     c=nPos-s;

}

 

int GetOffFromRC(int r, int c)

{

     int s,e;

 

     GetLine(r,s,e);

 

     c=min(c,e-s);

     return s+c;

}

 

GetRCFromOff ÇÔ¼ö´Â ¿ÀÇÁ¼ÂÀ» Àμö·Î ÁÖ¸é ÀÌ À§Ä¡°¡ ¸î ¹ø° ÁÙ(Row), ¸î ¹ø° Ä­(Column)ÀÎÁö Á¶»çÇÑ´Ù. ¹öÆÛÀÇ Ã³À½ºÎÅÍ ½ÃÀÛÇؼ­ nPos¿¡ À̸¦ ¶§±îÁö °³Ç๮ÀÚÀÇ °³¼ö¸¦ ¼¼¾î º¸¸é ÀÌ °³¼ö°¡ ¹Ù·Î ÁÙ¹øÈ£°¡ µÈ´Ù. ÁÙ¹øÈ£¸¦ ±¸ÇßÀ¸¸é GetLine ÇÔ¼ö·Î ÀÌ ÁÙÀÇ ¹üÀ§¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. ¿­¹øÈ£´Â ÇöÀç À§Ä¡¿¡¼­ ÁÙÀÇ ½ÃÀÛÀ§Ä¡ÀÎ s¸¦ »©¸é °£´ÜÇÏ°Ô ±¸ÇØÁø´Ù. ´ÙÀ½ ¹®¼­¿¡¼­ nPos À§Ä¡ÀÇ Çà·Ä°ªÀ» ±¸ÇÏ´Â °úÁ¤À» º¸ÀÚ. ÇöÀç À§Ä¡°¡ ¸¶Áö¸· ÁÙ ¡®ÀÌ¿ôµé¿¡°Ô¡¯ÀÇ ¡®¿¡¡¯ÀÚ¶ó°í ÇÏÀÚ.

¡®¿¡¡¯ÀÚ¿¡ À̸¦ ¶§±îÁö °³ÇàÄڵ带 ¼¼¾î º¸¸é 4°³ ¹ß°ßµÈ´Ù. µû¶ó¼­ ÀÌ À§Ä¡´Â 4¹ø° ÁÙÀÓÀ» ½±°Ô ¾Ë ¼ö ÀÖ´Ù. 4¹ø° ÁÙÀÇ ½ÃÀÛÀ§Ä¡´Â GetLine ÇÔ¼ö·Î ±¸ÇÒ ¼ö Àִµ¥ nPos¿¡¼­ ½ÃÀÛÀ§Ä¡ s¸¦ »©¸é ¸î ¹ø° Ä­ÀÎÁöµµ Á¶»çµÈ´Ù. Á¶»ç°á°ú ¡®¿¡¡¯ÀÚ´Â 4Çà 6¿­¿¡ À§Ä¡ÇÑ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ¸¸ç ÀÌ °á°ú¸¦ Àμö·Î Àü´ÞµÈ ·¹ÆÛ·±½º º¯¼ö r, c¿¡ ¸®ÅÏÇÑ´Ù.

ÀÌ ÇÔ¼ö´Â Àμö·Î Àü´ÞµÇ´Â nPos ¿ÀÇÁ¼ÂÀÌ Ç×»ó À¯È¿ÇÑ °ÍÀ¸·Î °¡Á¤ÇÏ°í ÀÖ´Ù. ¸¸¾à ¹öÆÛÀÇ ±æÀ̺¸´Ù ´õ ±ä ¿ÀÇÁ¼Â °ªÀÌ Àü´ÞµÇ¸é ÀÌ ÇÔ¼öÀÇ µ¿ÀÛÀº ¿¹ÃøÇÒ ¼ö ¾ø´Ù. Áï ¿¡·¯ 󸮸¦ ÇÏÁö ¾Ê´Â´Ù. ±×·¡¼­ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ÂÊ¿¡¼­ nPos°¡ ¹Ýµå½Ã À¯È¿Çϵµ·Ï º¸ÀåÇØ¾ß ÇÑ´Ù. ¿Ö ¿¡·¯ 󸮸¦ ÇÏÁö ¾Ê´Â°¡ ÇÏ¸é ºÒÇÊ¿äÇÑ °è»êÀ» ÇÏÁö ¾ÊÀ½À¸·Î½á ¼Óµµ¸¦ Á¶±ÝÀÌ¶óµµ ³ôÀ̱â À§Çؼ­ÀÌ´Ù.

GetOffFromRC´Â ¹Ý´ë·Î r, c °ªÀ¸·ÎºÎÅÍ ´ëÀÀµÇ´Â ¿ÀÇÁ¼Â À§Ä¡¸¦ ±¸Çϴµ¥ ÄÚµå´Â ÈξÀ ´õ °£´ÜÇÏ´Ù. GetLineÀ¸·Î r ÁÙÀÇ ¹üÀ§¸¦ Á¶»çÇÏ¸é ¿øÇÏ´Â ¿ÀÇÁ¼ÂÀº s~e »çÀÌ¿¡ ÀÖ´Ù. Á¶»çµÈ ½ÃÀÛÀ§Ä¡ s °ª¿¡¼­ c¸¦ ´õÇϸé ÀÌ Çà·Ä À§Ä¡¿¡ ´ëÀÀµÇ´Â ¿ÀÇÁ¼ÂÀÌ ±¸ÇØÁø´Ù. ´Ü ±¸ÇØÁø ¿ÀÇÁ¼ÂÀÌ ¹Ýµå½Ã s~e »çÀÌ¿¡ ÀÖµµ·Ï Á¶Á¤ÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. c°¡ ÁÙ ¹üÀ§ ¹Û¿¡ ÀÖ´õ¶óµµ °­Á¦·Î ÁÙ ¾ÈÂÊÀ¸·Î ³Ö¾îÁÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½ ±×¸²À» º¸ÀÚ.

GetOffFromRC(0,4)¸¦ È£ÃâÇÑ °æ¿ì ½ÃÀÛÀ§Ä¡ s¿¡ 4¸¦ ´õÇÑ 4°¡ °á°ú ¿ÀÇÁ¼ÂÀÌ µÈ´Ù. ±×·¯³ª 0Çà 20¿­À» ¿äûÇß´Ù¸é ÁÙÀÇ Á¦ÀÏ ³¡ÀÎ 17 ¿ÀÇÁ¼Â À§Ä¡¸¦ ´ë½Å ¸®ÅÏÇØ¾ß ÇÑ´Ù. ¿Ö³ÄÇϸé 0Çà 20¿­¿¡ ´ëÀÀµÇ´Â ¿ÀÇÁ¼ÂÀº ¾ø±â ¶§¹®ÀÌ´Ù. ±×·¡¼­ c¸¦ s¿¡ ´õÇϱâ Àü¿¡ ÁÙ ±æÀ̺¸´Ù ´õ ±æ´Ù¸é ÁÙ ±æÀÌ¿Í °°µµ·Ï ¸¸µå´Â c=min(c,e-s) Äڵ尡 ÇÊ¿äÇÏ´Ù.