41-2-³ª.¸ÊÀÇ È°¿ë

¸ÊÀÇ °¡Àå Å« ÀåÁ¡Àº ºü¸¥ °Ë»ö ¼ÓµµÀÌ´Ù. ۸¦ »ðÀÔÇÒ ¶§¸¶´Ù Á¤·ÄµÈ À§Ä¡¸¦ ã¾Æ¼­ »ðÀÔÇØ¾ß ÇϹǷΠ°Ë»öÀ» À§ÇÑ ´ë¿ë·®ÀÇ ¸ÊÀ» ÀÛ¼ºÇÏ´Â µ¥´Â »ç½Ç ²Ï ¿À·£ ½Ã°£ÀÌ °É¸°´Ù. ±×·¯³ª ÀÏ´Ü ÇÑ ¹ø ¸¸µé¾îÁö°í ³ª¸é °Ë»ö ¼Óµµ´Â ÇѸ¶µð·Î ³¡³»ÁØ´Ù. À̺Р°Ë»ö¹ýÀ» »ç¿ëÇϹǷΠ10¾ï°³Áß¿¡ Çϳª¸¦ ã´Â´Ù ÇØµµ ÃÖ¾ÇÀÇ °æ¿ì 30¹ø Á¤µµ¸¸ ºñ±³ÇÏ¸é µÇ´Â Á¤µµ¶ó ±×¾ß ¸»·Î ¾öû³­ ¼Óµµ´Ù.

±×°Íµµ ÃÖ¾ÇÀÇ °æ¿ì°¡ ±×·¸°í ´ë°³ÀÇ °æ¿ì 10¹ø ¾ÈÆÆÀÇ ºñ±³¸¸À¸·Î ¿øÇÏ´Â ¿ä¼Ò¸¦ ½Å¼ÓÇÏ°Ô Ã£À» ¼ö ÀÖ´Ù. ±×·¡¼­ ¸ÊÀº ´ë¿ë·®ÀÇ ÀڷḦ °ü¸®Çϸ鼭 °Ë»ö ¼Óµµ´Â »¡¶ó¾ß ÇÏ°í ¶Ç °Ë»öÀ» ¾ÆÁÖ ÀÚÁÖÇÒ ¶§ ÃÖÀûÀÇ ÄÁÅ×À̳ʶó°í ÇÒ ¼ö ÀÖ´Ù. ¸ÊÀ» ½Ç¿ëÀûÀ¸·Î »ç¿ëÇÏ´Â ¿¹¸¦ º¸ÀÚ. ´ÙÀ½ ¿¹Á¦´Â DNS ¼­¹ö¸¦ Èä³»³½´Ù.

 

¿¹ Á¦ : DnsServer

#include <iostream>

#include <string>

#include <map>

#include <algorithm>

using namespace std;

 

struct {const char * first; unsigned second; } sites[] = {

     {"www.winapi.co.kr",0x10203040},

     {"www.lpacampus.com",0x20304050},

     {"www.microsoft.com",0x99999999},

     {"www.borland.com",0xbbbbbbbb},

     {"kangcom.com",0xccaabbdd},

     {"www.maxplusone.com",0x12345678},

};

 

void main()

{

     map<string,unsigned> dns;

     int i;

 

     for (i=0;i<4;i++) {

          dns[sites[i].first]=sites[i].second;

     }

 

     map<string,unsigned>::iterator it;

     it=dns.find("www.winapi.co.kr");

     if (it == dns.end()) {

          cout << "µî·ÏµÇÁö ¾ÊÀº »çÀÌÆ®ÀÔ´Ï´Ù." << endl;

     } else {

          cout << it->first << "ÀÇ ÁÖ¼Ò´Â " << it->second << "ÀÔ´Ï´Ù." << endl;

     }

}

 

DNS ¼­¹ö¶õ ÀÎÅÍ³Ý »çÀÌÆ®ÀÇ URL°ú IPÀÇ ½ÖÀ» ã¾Æ ÁÖ´Â ¼­ºñ½º¸¦ ÇÏ´Â ¼­¹öÀε¥ »ç¿ëÀÚµéÀÌ »çÀÌÆ®ÀÇ ½ÇÁ¦ ÁÖ¼Ò¸¦ ÀÏÀÏÀÌ ¿Ü¿ï ¼ö ¾øÀ¸¹Ç·Î ±â¾ïÇϱ⠽¬¿î µµ¸ÞÀÎ À̸§À» »ç¿ëÇϵµ·Ï Çϰí DNS ¼­¹ö°¡ µµ¸ÞÀÎ À̸§À» ½ÇÁ¦ IP ÁÖ¼Ò·Î º¯°æÇØ ÁØ´Ù. ¿¹Á¦¿¡¼­´Â °íÀÛ ¿©¼¸ °³ÀÇ µµ¸ÞÀÎÀ» ±¸Á¶Ã¼ ¹è¿­·Î µî·ÏÇϰí Àִµ¥ ½ÇÁ¦ ¼­¹ö¶ó¸é ÀÌ Á¤º¸¸¦ µ¥ÀÌÅÍ º£À̽º¿¡¼­ Àоî¿Í ¸ÊÀ¸·Î ÀÛ¼ºÇϰųª ¾Æ´Ï¸é µ¥ÀÌÅÍ º£À̽º ÀÚü°¡ ¸Ê ÇüÅ·ΠµÇ¾î ÀÖÀ» °ÍÀÌ´Ù.

ÀÎÅͳݿ¡¼­ Åë¿ëµÇ´Â µµ¸ÞÀÎ ÁÖ¼ÒÀÇ °³¼ö´Â ±×¾ß¸»·Î ¾öû³ª°í Áö±Ý ÀÌ ¼ø°£¿¡µµ °è¼Ó ´Ã¾î³ª°í ÀÖ´Â ÁßÀÌ´Ù. ¾Æ¸¶ Á·È÷ ¹é¸¸°³´Â ´õ µÉÅÙµ¥ ÀÌ Á¤µµÀÇ ´ë¿ë·® ¸ÊÀ» ÀÛ¼ºÇÏ·Á¸é ²Ï ¿À·£ ½Ã°£ÀÌ °É¸°´Ù. ±×·¯³ª DNS ¼­¹ö´Â ÇÑ ¹ø ¼ÂÆÃµÇ¸é ÃÖ¼Ò ¸î ³â, °íÀ峪¼­ Æó±âµÉ ¶§±îÁö ¹öƼ¹Ç·Î ÀÌ ÀÛ¾÷Àº µü ÇÑ ¹ø¸¸ ÇÏ¸é µÈ´Ù. µµ¸ÞÀÎ ÁÖ¼Ò Á¤º¸´Â º¸Åë ÇÏ·ç¿¡ Çѵιø¾¿ °»½ÅµÇ´Âµ¥ ¸î °³ ÷»èÇÏ´Â Á¤µµ¾ß ±×¸® ¾î·Á¿î Àϵµ ¾Æ´Ï´Ù.

DNS ¼­¹ö°¡ ¹Þ´Â °Ë»ö ¿äûÀº 1ÃÊ¿¡µµ ¼ö¹é°ÇÀÌ ÈξÀ ³ÑÀ¸¸ç ÇÏ·çÁ¾ÀÏ Á×Ä¡°í ¾É¾Æ¼­ µµ¸ÞÀÎ ÁÖ¼Ò º¯È¯¸¸ Çϰí ÀÖ´Ù. ÇÏÁö¸¸ °Ë»öÀ» À§ÇØ ÄÁÅ×À̳ʰ¡ ¸¸¹ÝÀÇ Áغñ¸¦ Çϰí ÀÖÀ¸¹Ç·Î µµ¸ÞÀÎ ÇϳªÀÇ ÁÖ¼Ò¸¦ Á¶»çÇϴµ¥ °É¸®´Â ½Ã°£Àº ±×¾ß¸»·Î ´«±ô¦ÇÒ »çÀ̵µ ¾ÈµÈ´Ù. ÄÁÅ×À̳ʸ¦ »ý¼ºÇÏ´Â ¼Óµµº¸´Ù´Â °Ë»ö ¼Óµµ°¡ ¾öû³ª°Ô Áß¿äÇϹǷΠDNS ¼­¹ö¿¡°Ô´Â ¸Ê ÄÁÅ×À̳ʰ¡ Á¦°ÝÀÎ °ÍÀÌ´Ù.

ÀÌ·± ÀÚ·áÀÇ ¿¹´Â ÀÏ»ó »ýȰ¿¡¼­µµ ¾ÆÁÖ ¸¹ÀÌ Ã£¾Æ º¼ ¼ö Àִµ¥ »çÀü µ¥ÀÌÅÍ´Â ÀüºÎ ¸ÊÀ¸·Î ÀÛ¼ºÇÑ´Ù. ¿µÇÑ »çÀüÀÇ µ¥ÀÌÅÍ´Â ¿µ¾î ´Ü¾î¸¦ Ű·Î Çϰí ÇØ¼³ ¹®ÀÚ¿­À» °ªÀ» ÇÏ´Â ¸ÊÀ¸·Î ±¸¼ºµÈ´Ù. ±×·¡¼­ ¿µ¾î ´Ü¾î¸¸ ÃÄ ³ÖÀ¸¸é Áï°¢ °Ë»ö °¡´ÉÇÏ´Ù. ¸ÊÀÌ ÁÖ·Î ÀÌ·± ¿ëµµ·Î »ç¿ëµÇ±â ¶§¹®¿¡ µñ¼Å³Ê¸®¶ó°íµµ ºÎ¸¥´Ù.

¸ÊÀÇ ¶Ç ´Ù¸¥ Ȱ¿ë¿¹´Â Èñ¼Ò ÀڷḦ °ü¸®ÇÒ ¶§ÀÌ´Ù. Èñ¼Ò(Sparse) ÀÚ·á¶õ ´ëºÎºÐÀÇ °æ¿ì ±âº»°ªÀÌ°í ±ØÈ÷ ÀϺθ¸ ƯÁ¤ÇÑ °ªÀ» °¡Áö´Â ÀڷḦ ÀǹÌÇÑ´Ù. ¿¹¸¦ µé¾î ±¹¹ÎµéÀÌ ±¹°¡¿¡ ³»´Â ±âºÎ±ÝÀ» °ü¸®ÇÑ´Ù°í ÇØ º¸ÀÚ. ¿Ö °¡²û ±è¹ä ÆÈ¾Æ¼­ Æò»ý ¸ðÀº µ·À» ÁÁÀº ÀÏ¿¡ ½á ´Þ¶ó¸ç ±¹°¡¿¡ Çå³³ÇÏ´Â ÂøÇÑ »ç¶÷µéÀÌ ÀÖÁö ¾ÊÀº°¡? ÀÌ·± ºÐµéÀÌ ³½ ±âºÎ±ÝÀÇ ¸ñ·ÏÀ» °ü¸®ÇÒ ¸ñÀûÀ¸·Î ´ÙÀ½°ú °°Àº ÄÁÅ×À̳ʸ¦ ÀÛ¼ºÇß´Ù.

 

vector<int> don(50000000);

don[1248576]=100000;

 

´ëÇѹα¹ ±¹¹ÎÀº ´ë·« 5õ¸¸¸íÀÌ°í ´©±¸³ª ±âºÎ±ÝÀ» ³¾ °¡´É¼ºÀÌ ÀÖÀ¸¹Ç·Î ±¹¹Î ÇÑ ¸í´ç Çϳª¾¿ÀÇ ±â¾ï Àå¼Ò¸¦ ÇÒ´çÇÏ¿© 5õ¸¸ Å©±âÀÇ Á¤¼ö º¤Å͸¦ ÀÛ¼ºÇß´Ù. ±×¸®°í 1248576¹ø ÇҸӴϰ¡ 10¾ïÀ» ±âºÎÇßÀ¸¸é º¤ÅÍÀÇ ÀÌ ¿ä¼Ò¿¡ 10¾ïÀ̶ó°í ½á ³Ö´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÏ¸é ´©°¡ ¾ó¸¶¸¦ ³Â´ÂÁö ÀúÀåÇÒ ¼ö ÀÖ°í ÀÓÀÇ Á¢±ÙÀÌ °¡´ÉÇϹǷΠ°Ë»öµµ ºü¸£´Ù.

ÇÏÁö¸¸ ±â¾ï Àå¼ÒÀÇ ³¶ºñ°¡ ³Ê¹« ½ÉÇÏ´Ù´Â °ÍÀÌ ¹®Á¦´Ù. ³ª°°ÀÌ ¹ä¸¸ °Ü¿ì ¸Ô°í »ç´Â »ç¶÷Àº Æò»ýÀ» »ì¾Æµµ ±âºÎ±ÝÀ» ³¾ È®·üÀÌ °ÅÀÇ ¾øÀ¸¸ç µ·ÀÌ ¸¹¾Æµµ ±âºÎ±ÝÀ» ³»Áö ¾Ê´Â »ç¶÷µéµµ ¸¹´Ù. ¾Æ¸¶ ´ëºÎºÐÀÇ ±¹¹ÎµéÀº ±âºÎ±ÝÀÌ 0ÀÏ °ÍÀÌ´Ù. ÀϺΠºÎÀÚÀ̸鼭 ÂøÇÑ »ç¶÷µé¸¸ ±¹°¡¿¡ Çå³³À» ÇÒ »ÓÀÌ´Ù. °Ô´Ù°¡ ±â¾ï Àå¼Ò°¡ ³Ê¹« °Å´ëÇØ ¾Ë°í¸®ÁòÀ» Àû¿ëÇϱ⵵ ½±Áö ¾ÊÀºµ¥ ¿¹¸¦ µé¾î Àü ±¹¹ÎÀÇ ±âºÎ±Ý ÃÑÇÕÀ» ±¸ÇÏ·Á¸é ¾î·°Å³ª 5õ¸¸È¸Â¥¸® ·çÇÁ¸¦ ÇѹÙÄû µ¹¸± ¼ö¹Û¿¡ ¾ø´Ù. ÀÌ·² ¶§ ¸ÊÀ» »ç¿ëÇÏ¸é ¾ÆÁÖ ±â°¡ ¸·Èù´Ù.

 

map<unsigned, int> don;

don[1248576]=100000;

 

±¹¹Î ¹øÈ£¸¦ Ű·Î ÇÏ°í ±âºÎ±ÝÀ» °ªÀ¸·Î ÇÏ´Â ºó ¸ÊÀ» ¸¸µé°í ±âºÎ±ÝÀ» ³½ »ç¶÷¿¡ ´ëÇØ¼­¸¸ ¿ä¼Ò¸¦ »ðÀÔÇÑ´Ù. ±âºÎ±ÝÀ» ³»Áö ¾Ê´Â ´ëºÎºÐÀÇ »ç¶÷Àº ¸Ê¿¡ µé¾î°¡Áöµµ ¾ÊÀ¸¹Ç·Î ±â¾ï Àå¼Ò°¡ Àý¾àµÇ¸ç ÇÕ»êÀ» ÇÏ·Á¸é ¹Ýº¹ÀÚ·Î ±âºÎ±ÝÀ» ³½ »ç¶÷µé¸¸ ¼øÈ¸ÇÏ¸é ±×¸¸ÀÌ´Ù. ´©°¡ ±âºÎ±ÝÀ» ³Â´ÂÁö Á¶»çÇØ º¸°í ½ÍÀ¸¸é find ¸â¹ö ÇÔ¼ö·Î ã¾Æº¸°í end°¡ ¸®ÅÏµÇ¸é ±âºÎ±ÝÀ» ³»Áö ¾ÊÀº °ÍÀ¸·Î ÆÇ´ÜÇÒ ¼ö ÀÖ´Ù.

¼öÇп¡´Â Èñ¼Ò Çà·ÄÀ̶ó´Â °ÍÀÌ ÀÖ´Ù. °¡·Î ¼¼·Î·Î ¾ÆÁÖ Å« Çà·ÄÀÌµÇ ´ëºÎºÐÀÌ °ªÀº 0ÀÌ¸ç ¾ÆÁÖ µå¹°°Ô ÇÑ µÎ ¿ä¼Ò¸¸ ÀǹÌÀÖ´Â °ªÀ» °¡Áö´Â Çà·ÄÀÌ´Ù. ÀÌ·± Çà·Äµµ °Å´ëÇÑ ÀÌÂ÷¿ø ¹è¿­·Î Ç¥ÇöÇÏ´Â °Íº¸´Ù´Â ¸ÊÀ¸·Î Ç¥ÇöÇÏ´Â °ÍÀÌ Á¤¼®ÀÌ´Ù.