19-3-³ª.½ºÅÃÀ» ÀÌ¿ëÇÑ °è»ê±â

¼ö½ÄÀÇ °è»ê

ÄÄÇ»ÅÍ´Â °è»êÀ» ÇÏ´Â ±â°èÀ̹ǷΠ´ç¿¬È÷ º¹ÀâÇÑ ¼ö½Äµµ °è»êÇÒ ¼ö ÀÖ´Ù. À̶§ °è»ê½ÄÀº »ç¶÷À¸·ÎºÎÅÍ ÁÖ¾îÁö´Âµ¥ Űº¸µå·Î ÀÔ·ÂµÈ ¹®ÀÚ¿­¿¡¼­ ¼ýÀÚ¿Í ¿¬»êÀÚ¸¦ ÃßÃâÇØ¼­ °è»êÇØ¾ß ÇÏ´Â °æ¿ì°¡ ¸¹´Ù. º¹ÀâÇÑ ¼ö½Ä ¹®ÀÚ¿­À» ¼öÄ¡·Î º¯È¯Çؼ­ °è»êÇÏ´Â ½Ç½ÀÀ» ÇØ º¸ÀÚ.

°¡Àå °£´ÜÇÑ ¼ö½ÄÀ¸·Î "1+2"°¡ ÁÖ¾îÁ³´Ù°í ÇØ º¸ÀÚ. ÀÌ ¼ö½ÄÀ» Ç®·Á¸é atoi µîÀÇ ÇÔ¼ö·Î ¼ýÀÚ 1 °ú 2¸¦ ÃßÃâÇÏ°í µ¡¼À ¿¬»êÀÚ +¸¦ ÃßÃâÇÏ¿© ¾çº¯ÀÇ ¼ö¸¦ »ê¼úÀûÀ¸·Î ´õÇØ 3À̶ó´Â °á°ú¸¦ ¸¸µé¸é µÈ´Ù. ¹®ÀÚ¿­À» ¼ø¼­´ë·Î ÀÐÀ¸·Á¸é Æ÷ÀÎÅÍ·Î ¿ÞÂʺÎÅÍ ¹®ÀÚµéÀ» ½ºÄµÇØ¾ß Çϴµ¥ ÀÌ Á¤µµ ¼ö½ÄÀ̶ó¸é ¾î·ÆÁö ¾Ê°Ô °è»êÇÒ ¼ö ÀÖ´Ù. Á¶±Ý ´õ º¹ÀâÇÑ "1+2*3" ¿¬»ê½ÄÀº ¿ì¼± ¼øÀ§¸¦ °í·ÁÇØ¾ß ÇϹǷΠ»ý°¢Ã³·³ ½±Áö ¾Ê´Ù. Á¤´äÀº 7ÀÌµÇ ¹®ÀÚ¿­À» ¼ø¼­´ë·Î ÀÐÀ¸¸é¼­ °è»êÇÏ´Â ´Ü¼øÇÑ ¹æ¹ýÀ» »ç¿ëÇϸé 9¶ó´Â ¿À´äÀÌ ³ª¿Ã ¼öµµ ÀÖ´Ù.

±×·¸´Ù¸é ´õ º¹ÀâÇÑ ½Ä "23+35*8-(4+2)/3"À» º¸ÀÚ. ¿¬»ê ¼øÀ§µµ °í·ÁÇØ¾ß ÇÏ°í µÎ ÀÚ¸®¼ö ÀÌ»óµµ ÀÖ°í °­Á¦·Î ¼øÀ§¸¦ ¹Ù²Ù´Â °ýÈ£±îÁö ÀÖ¾î ¹®ÀÚ¿­ ½ºÄµ Á¤µµ ¼öÁØÀ¸·Î´Â ¾öµÎ°¡ ³ªÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ·± º¹ÀâÇÑ ¼ö½ÄÀ» Ç®·Á¸é ¾à°£ÀÇ ¹ß»ó ÀüȯÀÌ ÇÊ¿äÇÏ´Ù.

TextCalc

¹®ÀÚ¿­ ÇüÅ·ΠÁÖ¾îÁø ¼ö½ÄÀ» °è»êÇÏ´Â ¾Ë°í¸®ÁòÀº ¸¹ÀÌ °³¹ßµÇ¾î Àִµ¥ ¿©±â¼­´Â ½ºÅÃÀ» ÀÌ¿ëÇØ¼­ ¹®Á¦¸¦ Ç®¾î º¸µµ·Ï ÇÏÀÚ. ÀÏ´Ü Àüü ¼Ò½º¸¦ º¸ÀδÙ.

 

¿¹ Á¦ : TextCalc

#include <Turboc.h>

#include <math.h>

 

char *cStack;

int cSize;

int cTop;

 

void cInitStack(int aSize)

{

     cSize=aSize;

     cStack=(char *)malloc(cSize*sizeof(char));

     cTop=-1;

}

 

void cFreeStack()

{

     free(cStack);

}

 

BOOL cPush(char data)

{

     if (cTop < cSize-1) {

          cTop++;

          cStack[cTop]=data;

          return TRUE;

     } else {

          return FALSE;

     }

}

 

char cPop()

{

     if (cTop >= 0) {

          return cStack[cTop--];

     } else {

          return -1;

     }

}

 

double *dStack;

int dSize;

int dTop;

 

void dInitStack(int aSize)

{

     dSize=aSize;

     dStack=(double *)malloc(dSize*sizeof(double));

     dTop=-1;

}

 

void dFreeStack()

{

     free(dStack);

}

 

BOOL dPush(double data)

{

     if (dTop < dSize-1) {

          dTop++;

          dStack[dTop]=data;

          return TRUE;

     } else {

          return FALSE;

     }

}

 

double dPop()

{

     if (dTop >= 0) {

          return dStack[dTop--];

     } else {

          return -1;

     }

}

 

int GetPriority(int op)

{

     switch (op) {

     case '(':

          return 0;

     case '+':

     case '-':

          return 1;

     case '*':

     case '/':

          return 2;

     case '^':

          return 3;

     }

     return 100;

}

 

void MakePostfix(char *Post, const char *Mid)

{

     const char *m=Mid;

     char *p=Post,c;

     cInitStack(256);

 

     while (*m) {

          // ¼ýÀÚ - ±×´ë·Î Ãâ·ÂÇÏ°í µÚ¿¡ °ø¹é Çϳª¸¦ Ãâ·ÂÇÑ´Ù.

          if (isdigit(*m)) {

              while (isdigit(*m) || *m=='.') *p++=*m++;

              *p++=' ';

          } else

          // ¿¬»êÀÚ - ½ºÅÿ¡ ÀÖ´Â Àڱ⺸´Ù ³ôÀº ¿¬»êÀÚ¸¦ ¸ðµÎ ²¨³» Ãâ·ÂÇϰí ÀÚ½ÅÀº Ǫ½ÃÇÑ´Ù.

          if (strchr("^*/+-",*m)) {

              while (cTop!=-1 && GetPriority(cStack[cTop]) >= GetPriority(*m)) {

                   *p++=cPop();

              }

              cPush(*m++);

          } else

          // ¿©´Â °ýÈ£ - Ǫ½ÃÇÑ´Ù.

          if (*m=='(') {

              cPush(*m++);

          } else

          // ´Ý´Â °ýÈ£ - ¿©´Â °ýÈ£°¡ ³ª¿Ã ¶§±îÁö ÆËÇØ¼­ Ãâ·ÂÇÏ°í ¿©´Â °ýÈ£´Â ¹ö¸°´Ù.

          if (*m==')') {

              for (;;) {

                   c=cPop();

                   if (c=='(') break;

                   *p++=c;

               }

              m++;

          } else {

              m++;

          }

     }

     // ½ºÅÿ¡ ³²Àº ¿¬»êÀÚµé ¸ðµÎ ²¨³½´Ù.

     while (cTop != -1) {

          *p++=cPop();

     }

     *p=0;

     cFreeStack();

}

 

double CalcPostfix(const char *Post)

{

     const char *p=Post;

     double num;

     double left,right;

 

     dInitStack(256);

     while (*p) {

          // ¼ýÀÚ´Â ½ºÅÿ¡ ³Ö´Â´Ù.

          if (isdigit(*p)) {

              num=atof(p);

              dPush(num);

              for(;isdigit(*p) || *p=='.';p++) {;}

          } else {

              // ¿¬»êÀÚ´Â ½ºÅÿ¡¼­ µÎ ¼ö¸¦ ²¨³» ¿¬»êÇÏ°í ´Ù½Ã Çª½ÃÇÑ´Ù.

              if (strchr("^*/+-",*p)) {

                   right=dPop();

                   left=dPop();

                   switch (*p) {

                   case '+':

                        dPush(left+right);

                        break;

                   case '-':

                        dPush(left-right);

                        break;

                   case '*':

                        dPush(left*right);

                        break;

                   case '/':

                        if (right == 0.0) {

                             dPush(0.0);

                        } else {

                             dPush(left/right);

                        }

                        break;

                   case '^':

                        dPush(pow(left,right));

                        break;

                   }

              }

              // ¿¬»ê ÈÄ ¶Ç´Â ¿¬»êÀÚ°¡ ¾Æ´Ñ °æ¿ì ´ÙÀ½ ¹®ÀÚ·Î

              p++;

          }

     }

     if (dTop != -1) {

          num=dPop();

     } else {

          num=0.0;

     }

     dFreeStack();

     return num;

}

 

double CalcExp(const char *exp,BOOL *bError=NULL)

{

     char Post[256];

     const char *p;

     int count;

    

     if (bError!=NULL) {

          for (p=exp,count=0;*p;p++) {

              if (*p=='(') count++;

              if (*p==')') count--;

          }

          *bError=(count != 0);

     }

 

     MakePostfix(Post,exp);

     return CalcPostfix(Post);

}

 

void main()

{

     char exp[256];

     BOOL bError;

     double result;

 

     char *p=strchr("^*/+-",NULL);

     strcpy(exp,"2.2+3.5*4.1");printf("%s = %.2f\n",exp,CalcExp(exp));

     strcpy(exp,"(34+93)*2-(43/2)");printf("%s = %.2f\n",exp,CalcExp(exp));

     strcpy(exp,"1+(2+3)/4*5+2^10+(6/7)*8");printf("%s = %.2f\n",exp,CalcExp(exp));

 

     for (;;) {

          printf("¼ö½ÄÀ» ÀÔ·ÂÇϼ¼¿ä(³¡³¾ ¶§ 0) : ");

          gets(exp);

          if (strcmp(exp,"0")==0) break;

          result=CalcExp(exp,&bError);

          if (bError) {

              puts("¼ö½ÄÀÇ °ýȣ¦ÀÌ Æ²¸³´Ï´Ù.");

          } else {

              printf("%s = %.2f\n",exp,result);

          }

     }

}

 

½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù. ¸î °³ÀÇ ¿¹Á¦ ¼ö½ÄÀ» °è»êÇÏ¿© Ãâ·ÂÇÏ°í »ç¿ëÀڷκÎÅÍ ÀԷ¹ÞÀº ¼ö½Äµµ °è»êÇÒ ¼ö ÀÖ´Ù.

 

2.2+3.5*4.1 = 16.55

(34+93)*2-(43/2) = 232.50

1+(2+3)/4*5+2^10+(6/7)*8 = 1038.11

¼ö½ÄÀ» ÀÔ·ÂÇϼ¼¿ä(³¡³¾ ¶§ 0) : (1+2)*3

(1+2)*3 = 9.00

¼ö½ÄÀ» ÀÔ·ÂÇϼ¼¿ä(³¡³¾ ¶§ 0) : (((2-1)*3)+1)^2+5

(((2-1)*3)+1)^2+5 = 21.00

 

Ç¥±â½Ä º¯È¯À» À§Çؼ­ ¹®ÀÚ¿­ ½ºÅÃÀÌ ÇÊ¿äÇÏ°í ¼ö½Ä °è»êÀ» À§Çؼ­ ½Ç¼öÇü ½ºÅÃÀÌ ÇÊ¿äÇØ °¢ ŸÀÔº°µµ µÎ °³ÀÇ ½ºÅÃÀ» ¸¸µé¾ú´Ù. cStack°ú dStackÀº ÀúÀåÇÏ´Â µ¥ÀÌÅÍÀÇ Å¸ÀÔÀÌ ´Ù¸¦ »Ó µ¿ÀÛÇÏ´Â ¹æ½ÄÀº ¾Õ¿¡¼­ ¸¸µç Á¤¼öÇü ½ºÅðú µ¿ÀÏÇÏ´Ù. ŸÀÔÀÌ ´Ù¸£´Ù°í ÇØ¼­ ÇÔ¼ö¸¦ ¿ÏÀüÈ÷ »õ·Î ¸¸µé¾î¾ß ÇÏ´Â °ÍÀÌ ¸¶À½¿¡ ¾Èµå´Âµ¥ C++¿¡¼­´Â ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â ÅÛÇø´À̶ó´Â ¸ÚÁø ¹æ¹ýÀÌ ÀÖ´Ù.

ÈÄÀ§ Ç¥±â¹ý

¿ì¸®°¡ ¼ö½ÄÀ» Ç¥±âÇÒ ¶§ »ç¿ëÇϴ ǥ±â¹ýÀ» ÁßÀ§ Ç¥±â¹ý(Infix Notation)À̶ó°í Çϴµ¥ ¿¬»êÀÚ°¡ °¡¿îµ¥ ¿À°í ÇÇ¿¬»êÀÚ¸¦ ¿¬»êÀÚÀÇ ¾çÂÊ¿¡ ¾²´Â ¹æ½ÄÀÌ´Ù. ¿¹¸¦ µé¾î A¿Í B¸¦ ´õÇÑ´Ù¸é A+B·Î Ç¥±âÇÏ´Â Çü½ÄÀÌ´Ù. ¼öÇп¡¼­ ÀÌ ¹æ¹ýÀ» »ç¿ëÇϰí ÀÏ»ó »ýȰ¿¡¼­µµ ÈçÈ÷ »ç¿ëµÇ¹Ç·Î ÀÌ·± Ç¥±â¹ýÀº »ç¶÷ÀÌ º¸±â¿¡´Â ÁÁÁö¸¸ ±â°è°¡ °è»êÇϱâ´Â ¾î·Æ´Ù. ÁßÀ§½ÄÀÌ ¾î·Á¿î ÀÌÀ¯´Â ¿¬»ê ¼øÀ§¸¦ ÁöÁ¤ÇÏ´Â °ýÈ£°¡ ¹Ýµå½Ã ÇÊ¿äÇϱ⠶§¹®Àε¥ 2+(3*4)¿Í (2+3)*4°¡ ´Ù¸£°Ô °è»êµÈ´Ù. ÁßÀ§½Ä¿Ü¿¡µµ ¿¬»êÀÚÀÇ À§Ä¡¿¡ µû¶ó ´ÙÀ½ µÎ °¡Áö ¹æ¹ýÀ» ´õ »ý°¢ÇÒ ¼ö ÀÖ´Ù.

 

¢º ÀüÀ§½Ä(Prefix Notation) : ¿¬»êÀÚ°¡ ¾ÕÂÊ¿¡ ¿À°í ÇÇ¿¬»êÀÚ°¡ µÚ¿¡ ¿Â´Ù. +AB

¢º ÈÄÀ§½Ä(Postfix Notatio) : ÇÇ¿¬»êÀÚ°¡ ¾ÕÂÊ¿¡ ¿À°í ¿¬»êÀÚ°¡ µÚ¿¡ ¿Â´Ù. AB+

 

ÁßÀ§½Ä¿¡ ºñÇØ µ¿»ç¿Í ¸ñÀû¾îÀÇ ¼ø¼­°¡ ´Ù¸£´Ù. ÀüÀ§½Ä°ú ÈÄÀ§½ÄÀº ¿¬»ê ¿ì¼± ¼øÀ§¸¦ ÁöÁ¤ÇÏ´Â °ýÈ£°¡ ÇÊ¿ä¾ø´Ù. ¿Ö³ÄÇϸé ÁßÀ§½ÄÀ» Àü, ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ü ¶§ ¿¬»êÀÚÀÇ À§Ä¡¿¡ µû¶ó ¹Ì¸® ¿¬»ê ¼øÀ§¸¦ Àû¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¿¹¸¦ µé¾î ÁßÀ§½Ä A*B+C´Â ¿¬»ê ¼øÀ§¿¡ µû¶ó µÎ °¡Áö °æ¿ì°¡ Àִµ¥ À̸¦ Àü,ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ù¸é ´ÙÀ½°ú °°¾ÆÁø´Ù.

 

ÁßÀ§½Ä

ÀüÀ§½Ä

ÈÄÀ§½Ä

(A*B)+C

+*ABC

AB*C+

A*(B+C)

*A+BC

ABC+*

 

¿¬»êÀÚÀÇ µîÀå ¼ø¼­°¡ °ð ¿¬»ê ¼øÀ§À̹ǷΠ°ýÈ£°¡ ÇÊ¿ä¾ø´Ù. ±×·¡¼­ ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î ÀÐÀ¸¸é¼­ ¼ø¼­´ë·Î ¿¬»êÇϱ⸸ ÇÏ¸é µÈ´Ù. µÎ ¹æ¹ýÁß¿¡¼­´Â ÈÄÀ§½ÄÀÌ Á¶±Ý ´õ ½¬¿îµ¥ ÇÇ¿¬»êÀÚ¸¦ ±¸ÇØ ³õ°í ¿¬»êÀÚ°¡ ³ª¿Ã ¶§¸¶´Ù ¹Ì¸® Á¶»çÇÑ ÇÇ¿¬»êÀÚ¸¦ ¼ÀÇÏ¸é µÈ´Ù.

ÈÄÀ§½Ä º¯È¯

ÈÄÀ§½ÄÀÌ °è»ê¿¡ ¾Æ¹«¸® Æí¸®ÇÏ´Ù ÇÏ´õ¶óµµ »ç¶÷ÀÌ ÈÄÀ§½ÄÀ¸·Î ÀÔ·ÂÇÒ ¼ö´Â ¾ø´Ù. »ç¶÷Àº ¿À·§µ¿¾È ÁßÀ§½Ä¸¸ Àоî¿Ô±â ¶§¹®¿¡ ÈÄÀ§½ÄÀº »ç¶÷ÀÇ »ý¸®¿Í´Â µµ¹«Áö ¸ÂÁö ¾Ê´Ù. ±×·¡¼­ ÁßÀ§½ÄÀ¸·Î ÀÔ·ÂµÈ ¿¬»ê½ÄÀ» ÇÁ·Î±×·¥ÀÌ ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ù¾î ¿¬»êÇØ¾ß ÇÑ´Ù. ÁßÀ§½ÄÀ» ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ù´Â ÀýÂ÷´Â ´ÙÀ½°ú °°´Ù.

 

¨ç ¸ðµç ¿¬»ê¹®À» ¿ì¼± ¼øÀ§¿¡ ¸Â°Ô °ýÈ£¸¦ ÀüºÎ µÑ·¯½Ñ´Ù. ÁßÀ§½ÄÀº °ýÈ£°¡ ¾øÀ¸¸é ¾î¶² ½ÄÀÌ ¸ÕÀúÀÎÁö ¾Ë ¼ö ¾øÀ¸¹Ç·Î °¢ ºÎºÐ ¿¬»ê½Ä¿¡ °ýÈ£°¡ ÀÖ¾î¾ß ÇÑ´Ù.

¨è ¿¬»êÀÚ¸¦ ÀÚ½ÅÀÌ ¼ÓÇÑ °ýÈ£ ¹Ù±ùÀ¸·Î º¸³½´Ù. Áï, µÎ ÇÇ¿¬»êÀÚ »çÀÌ¿¡ ÀÖ´Â ¿¬»êÀÚ¸¦ ¹Ù·Î µÚÂÊÀ¸·Î º¸³»´Â °ÍÀÌ´Ù.

¨é ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ù¸é ÀÌÁ¦ °ýÈ£´Â Çʿ䰡 ¾øÀ¸¹Ç·Î ¸ðµÎ Á¦°ÅÇÑ´Ù.

 

A - B * C + D - E / F ÁßÀ§½ÄÀ» ÀÌ °ø½Ä´ë·Î ÈÄÀ§½ÄÀ¸·Î ¹Ù²ã º¸ÀÚ. ¿ì¼± ¼øÀ§¿¡ µû¶ó ¸ðµç ¿¬»ê½ÄÀ» °ýÈ£·Î ½Î¸é (((A - (B * C)) + D) - (E / F)) ÀÌ·± ¼ö½ÄÀÌ ¾ò¾îÁø´Ù. ±×¸®°í ¿¬»êÀÚ¸¦ µÚÂÊÀ¸·Î º¸³½ ÈÄ °ýÈ£¸¦ Á¦°ÅÇϸé ÈÄÀ§½ÄÀÌ ¿Ï¼ºµÈ´Ù.

°á°ú·Î ³ª¿Â "ABC*-D+EF/-"°¡ ÈÄÀ§½ÄÀ̸ç ÀÌ ½Ä¿¡ ¿¬»ê ¼øÀ§°¡ ÀÌ¹Ì ´Ù °í·ÁµÇ¾î ÀÖÀ¸¹Ç·Î °ýÈ£´Â ÇÊ¿äÄ¡ ¾Ê´Ù. °ýÈ£´Â ÁßÀ§½ÄÀÇ ¿ì¼± ¼øÀ§¸¦ ¸íÈ®È÷ Çϱâ À§ÇØ Àá½Ã ÇÊ¿äÇÒ »ÓÀÌ´Ù. ÀÌ·¸°Ô º¯È¯ÇÑ ÈÄ ¾ÕÂʺÎÅÍ ¼ø¼­´ë·Î ÀÐÀ¸¸é¼­ ¿¬»êÀ» ¼öÇàÇÏ¸é µÈ´Ù.

½ºÅÃÀ» ÀÌ¿ëÇÑ ÈÄÀ§½Ä º¯È¯

¹®ÀÚ¿­À» ¹Ù·Î Á¶ÀÛÇÏ¿© ÈÄÀ§½ÄÀ¸·Î º¯È¯ÇÏ´Â ¹æ¹ýÀº Á÷°üÀûÀÌ°í ½±±â´Â ÇÏÁö¸¸ ÁßÀ§½ÄÀÇ °ýÈ£°¡ ¿ÏÀüÇØ¾ß ÇÑ´Ù´Â Á¦¾à Á¶°ÇÀÌ ÀÖ¾î Çö½ÇÀûÀ¸·Î »ç¿ëÇϱâ´Â ¾î·Æ´Ù. »ç¿ëÀÚ´Â »·ÇÑ ¼ö½Ä¿¡ ´ëÇØ¼­´Â °ýÈ£¸¦ ¾²Áö ¾ÊÀ¸¹Ç·Î °ýÈ£¸¦ ½Î´Â °Íµµ ÇÁ·Î±×·¥ÀÌ Á÷Á¢ ÇØ¾ß ÇÏ´Â ºÎ´ãÀÌ ÀÖ´Ù. ½ºÅÃÀ» ÀÌ¿ëÇÑ ÈÄÀ§½Ä º¯È¯Àº ÀÌ¿¡ ºñÇØ °ýÈ£°¡ ¿ÏÀüÇÏÁö ¾Ê°í ÀϺΠ»ý·«µÇ¾î ÀÖ´õ¶óµµ ³»ºÎÀûÀÎ ¿ì¼± ¼øÀ§ ±ÔÄ¢¿¡ µû¶ó ÈÄÀ§½ÄÀ¸·Î º¯È¯ °¡´ÉÇÏ´Ù.

´ÙÀ½Àº ½ºÅÃÀ» ÀÌ¿ëÇÏ¿© ÈÄÀ§½ÄÀ¸·Î º¯È¯ÇÏ´Â ÀýÂ÷ÀÌ´Ù. ÁßÀ§½ÄÀ» ÀÔ·Â ¹®ÀÚ¿­·Î »ç¿ëÇÏ°í º°µµÀÇ ÈÄÀ§½Ä ¹öÆÛ¸¦ ÁغñÇÑ ÈÄ ¿ÞÂÊ¿¡¼­ ¼ø¼­´ë·Î ÀÐÀ¸¸é¼­ °ø½Ä´ë·Î ÈÄÀ§½Ä ¹öÆÛ·Î Ãâ·ÂÇÏ¸é µÈ´Ù. ÁßÀ§½Ä ÇüÅÂÀÇ ¹®ÀÚ¿­À» ÈÄÀ§½Ä ¹®ÀÚ¿­·Î ¹Ù²Ù´Â °ÍÀÌ´Ù.

 

¨ç ¼ýÀÚ¸¦ ¸¸³ª¸é ¹öÆÛ·Î ¹Ù·Î Ãâ·ÂÇÑ´Ù. ¼ýÀÚ¸¦ ±¸¼ºÇÏ´Â ¿¬¼ÓµÈ ¹®ÀÚ¸¦ ¸ðµÎ ÃßÃâÇØ¼­ ÇϳªÀÇ ¼öÄ¡°ªÀ» ¸¸µé¾î¾ß Çϴµ¥ Á¤¼öÀÌ¸é ¿¬¼ÓµÇ´Â ¾Æ¶óºñ¾Æ ¼ýÀÚ¸¦ Ãâ·ÂÇÏ°í ½Ç¼öÀÏ °æ¿ì ¼Ò¼öÁ¡ ¹®ÀÚ(.)µµ °°ÀÌ Ãâ·ÂÇØ¾ß ÇÑ´Ù. ±×¸®°í À̾îÁö´Â ´Ù¸¥ ÇÇ¿¬»êÀÚ¿ÍÀÇ ±¸ºÐÀ» À§ÇØ °ø¹éÀ» Çϳª »ðÀÔÇÑ´Ù. ÁßÀ§½ÄÀº ÇÇ¿¬»êÀÚµé »çÀÌ¿¡ ¿¬»êÀÚ°¡ ÀÖÁö¸¸ ÈÄÀ§½ÄÀº ÇÇ¿¬»êÀÚ°¡ µ¿½Ã¿¡ µÑ ÀÌ»ó ¿¬¼ÓÀ¸·Î ³ª¿Ã ¼ö ÀÖÀ¸¹Ç·Î ±¸ºÐÀ» À§ÇÑ °ø¹éÀÌ ÇÊ¿äÇÏ´Ù.

¨è ¿¬»êÀÚ¸¦ ¸¸³ª¸é ½ºÅÃÀ» °Ë»çÇÏ¿© Àڽź¸´Ù ¿ì¼± ¼øÀ§°¡ ³ôÀº ¿¬»êÀÚ¸¦ ¸ðµÎ ²¨³» Ãâ·ÂÇÑ´Ù. ¿¹¸¦ µé¾î *°¡ ½ºÅÿ¡ ÀÌ¹Ì µé¾î°¡ ÀÖ´Â »óÅ¿¡¼­ +¿¬»êÀÚ¸¦ ¸¸³µ´Ù¸é *°¡ ¸ÕÀú ¿¬»êµÉ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ±×¸®°í ÀÚ±â ÀÚ½ÅÀ» ½ºÅÿ¡ Ǫ½ÃÇÏ¿© ÀúÀåÇÑ´Ù. ¿¬»êÀÚ´Â ÀÏ´Ü ½ºÅÿ¡ ÀúÀåµÇ¾î Â÷·Ê¸¦ ±â´Ù·Á¾ß Çϴµ¥ Àڽź¸´Ù ³·Àº ¿¬»êÀÚ³ª ´Ý´Â °ýÈ£, ¶Ç´Â ¼ö½ÄÀÇ ³¡ÀÏ ¶§ ²¨³»Áø´Ù.

¨é ¿©´Â °ýÈ£¸¦ ¸¸³ª¸é ½ºÅÿ¡ Ǫ½ÃÇÑ´Ù. ¿©´Â °ýÈ£´Â ´Ý´Â °ýÈ£°¡ ºÎºÐ ¼ö½ÄÀÇ ½ÃÀÛÁ¡À» ã±â À§ÇØ, ±×¸®°í 2¹ø ±ÔÄ¢¿¡¼­ ³ôÀº ¿ì¼± ¼øÀ§ÀÇ ¿¬»êÀÚ¸¦ ¾îµð±îÁö ãÀ» °ÍÀΰ¡¸¦ °áÁ¤Çϱâ À§ÇØ ÇÊ¿äÇÏ´Ù.

¨ê ´Ý´Â °ýÈ£¸¦ ¸¸³ª¸é ¿©´Â °ýÈ£°¡ ³ª¿Ã ¶§±îÁö ½ºÅÿ¡ ½×¿© ÀÖ´Â ¸ðµç ¿¬»êÀÚ¸¦ ²¨³» Ãâ·ÂÇÑ´Ù. °ýÈ£¾È¿¡ ÀÖ´Â ½ÄÀº ¿ì¼± ¿¬»êµÇ¾î¾ß ÇϹǷΠ´ÙÀ½ Â÷·Ê¸¦ ±â´Ù¸± ÇÊ¿ä¾øÀÌ Áï½Ã ¿¬»êÇØ¾ß ÇÑ´Ù. ¾çÂÊ °ýÈ£´Â ¿ì¼± ¼øÀ§ ÁöÁ¤À» À§ÇÔ ÀÓ¹«¸¦ ¸¶ÃÆÀ¸¹Ç·Î ¹öÆÛ·Î º¸³¾ Çʿ䰡 ¾ø´Ù. ´Ý´Â °ýÈ£´Â ´Ü¼øÈ÷ ¹«½ÃÇÏ°í ½ºÅÿ¡ ÀúÀåµÈ ¿©´Â °ýÈ£´Â »©¼­ ¹ö¸°´Ù. ÁßÀ§½Ä¿¡¼­´Â °ýÈ£°¡ ¿¬»ê ¼øÀ§ ÁöÁ¤À» À§ÇØ ÇÊ¿äÇÏÁö¸¸ ÈÄÀ§½Ä¿¡¼­´Â ÇÊ¿äÇÏÁö ¾Ê´Ù.

¨ë ÁßÀ§½ÄÀÌ ³¡³¯ ¶§±îÁö ¨ç~¨êÀÇ °úÁ¤À» °è¼Ó ¹Ýº¹ÇÑ´Ù. ¸ðµç °úÁ¤À» ¸¶Ä£ ÈÄ ½ºÅÿ¡ ³²¾Æ ÀÖ´Â ¿¬»êÀÚ¸¦ Â÷·Ê´ë·Î ²¨³» ¹öÆÛ·Î Ãâ·ÂÇÑ´Ù. ³²¾Æ ÀÖ´Â ¿¬»êÀÚµéÀº ¿ì¼± ¼øÀ§°¡ ´À¸° ¿¬»êÀÚµéÀ̹ǷΠÁ¦ÀÏ µÚÂÊ¿¡ ºÙ¿©¾ß ÇÑ´Ù.

¿¬»ê ¿ì¼± ¼øÀ§

°ýÈ£´Â ¿ì¼± ¼øÀ§¸¦ ÁöÁ¤ÇÏ´Â ¿ªÇÒÀ» ÇϹǷΠ°ýÈ£°¡ ÀÖÀ¸¸é °ýÈ£ÀÇ ¾ÈÂÊÀ» ¿ì¼±ÀûÀ¸·Î °è»êÇØ¾ß ÇÑ´Ù. ±×·¯³ª °ýÈ£°¡ ¾ø´Â ¼ö½Ä¿¡ ´ëÇØ¼­´Â ¹Ì¸® Á¤ÇÑ ¿¬»ê ¼øÀ§ ±ÔÄ¢¿¡ µû¶ó ¿¬»êÀÚ¸¦ ¹èÄ¡ÇÏ¿© ÈÄÀ§½ÄÀ¸·Î º¯È¯ÇØ¾ß ÇÑ´Ù. ÈÄÀ§½Ä º¯È¯¿¡¼­ »ç¿ëÇÏ´Â ¿¬»ê ¼øÀ§´Â ´ÙÀ½°ú °°Àºµ¥ ¿ì¼± ¼øÀ§°¡ ³ôÀ»¼ö·Ï ¸ÕÀú °è»êµÈ´Ù. »çÄ¢ ¿¬»ê°ú ´©½Â Á¤µµ¸¸ Æ÷ÇÔÇߴµ¥ ±× ¿ÜÀÇ ¿¬»êÀÚµµ ¹°·Ð Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù.

 

¿¬»êÀÚ

¿ì¼± ¼øÀ§

(

0

+, -

1

*, /

2

^(´©½Â)

3

 

+. - º¸´Ù´Â *, /ÀÇ ¼øÀ§°¡ ³ô°í *, /º¸´Ù´Â ^ÀÇ ¿ì¼± ¼øÀ§°¡ ³ôÀºµ¥ ÀÌ´Â ¼öÇÐÀû Á¤Àǿ͵µ ÀÏÄ¡ÇÑ´Ù. ±×·±µ¥ °ýÈ£ÀÇ ¿ì¼± ¼øÀ§°¡ °¡Àå ³·°Ô ¼³Á¤µÇ¾î ÀÖ´Â Á¡Àº »ó½Ä°ú ÀÏÄ¡ÇÏÁö ¾Ê´Âµ¥ ±× ÀÌÀ¯´Â ¨è¹ø ±ÔÄ¢ÀÌ Á¦´ë·Î µ¿ÀÛÇϱâ À§Çؼ­ÀÌ´Ù. ¿¬»êÀÚ¸¦ ¸¸³¯ ¶§ ¿ì¼± ¼øÀ§°¡ ³ôÀº ¿¬»êÀÚ¸¦ ½ºÅÿ¡¼­ ¸ÕÀú ²¨³»µµ·Ï µÇ¾î Àִµ¥ ¿©´Â °ýÈ£ÀÇ ¿ÞÂÊ¿¡ ÀÖ´Â ¿¬»êÀÚ±îÁö´Â º¼ Çʿ䰡 ¾ø´Ù.

¿¹¸¦ µé¾î 2^(3*4+5)¿¡¼­ ^ÀÌ ½ºÅÿ¡ ¸ÕÀú µé¾î°¡°í ´ÙÀ½À¸·Î (, *°¡ µé¾î°¡´Âµ¥ +¸¦ ¸¸³µÀ» ¶§ *´Â ¿ì¼±ÀûÀ¸·Î ²¨³»¾ß ÇÏÁö¸¸ °ýÈ£ ¹Ù±ùÀÇ ^Àº ¾ÆÁ÷ ²¨³¾ Çʿ䰡 ¾ø´Â °ÍÀÌ´Ù. ½ºÅÿ¡¼­ ¿©´Â °ýÈ£¸¦ ¸¸³µ´Ù´Â °ÍÀº ÇöÀç ¿¬»êÀÚ°¡ °ýÈ£¾È¿¡ ÀÖ´Ù´Â ¶æÀÌ°í °ýÈ£ÀÇ ¾ÈÀº ¹Ù±ùº¸´Ù Ç×»ó ¿ì¼±À̹ǷΠ°ýÈ£¸¦ ¸¸³ª¸é Àڽź¸´Ù ³ôÀº ¿¬»êÀÚ¸¦ ´õ ÀÌ»ó ãÁö ¾Ê¾Æµµ µÈ´Ù.

ÀÌ ±ÔÄ¢À» ¸¸Á·Çϱâ À§ÇØ °ýÈ£ÀÇ ¿ì¼± ¼øÀ§¸¦ °¡Àå ³·°Ô ¼³Á¤ÇÏ¿© ¾î¶² ¿¬»êÀÚµç °ýÈ£¸¦ ¸¸³¯¶§ ½ºÅà ÆËÀ» ÁßÁöÇϵµ·Ï Çß´Ù. »ç½Ç °ýÈ£´Â ¿¬»êÀÚ°¡ ¾Æ´Ï¸ç ¿ì¼± ¼øÀ§¸¦ ÁöÁ¤ÇÏ´Â ±¸µÎÁ¡ÀÏ »ÓÀ̹ǷΠ±× ÀÚü¿¡´Â ¿¬»ê ¼øÀ§°¡ ¾ø´Ù°í º¼ ¼ö ÀÖ´Ù. ´Ù¸¸ ´Ù¸¥ ¿¬»êÀÚµéÀÇ ¿ì¼± ¼øÀ§ ±¸ºÐÀ» À§ÇØ ÀÓ½ÃÀûÀ¸·Î ½ºÅÿ¡ Ǫ½ÃµÉ »ÓÀÌ¸ç °ýÈ£´Â ¨é, ¨ê¹ø ±ÔÄ¢¿¡ ÀÇÇØ µû·Î °ü¸®µÈ´Ù. ¿¹Á¦¿¡¼­´Â GetPriority ÇÔ¼ö·Î ¿¬»ê ¼øÀ§¸¦ Á¶»çÇϴµ¥ ´Ü¼øÇÑ switch¹®ÀÌ´Ù.

º¯È¯ÀÇ ¿¹

º¯È¯ ±ÔÄ¢ÀÌ ¹«Ã´ º¹ÀâÇѵ¥ ±¸Ã¼ÀûÀÎ ¿¹¸¦ µé¾î º¸ÀÚ. ´ÙÀ½Àº ¾ÆÁÖ °£´ÜÇÑ ÁßÀ§½Ä A+B*C¸¦ ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ù´Â ÀýÂ÷ÀÌ´Ù. Á¾ÀÌ¿¡ ÀÔ·Â ¹öÆÛ, Ãâ·Â ¹öÆÛ, ±×¸®°í ½ºÅÃÀ» ±×·Á ³õ°í Á÷Á¢ º¯È¯ÇØ º¸¾Æ¶ó.

 

ÀÔ·Â ¹®ÀÚ

Ãâ·Â ¹öÆÛ

½ºÅÃ

¼³¸í

A

A

 

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

+

A

+

¿¬»êÀÚ´Â ½ºÅÿ¡ ÀúÀå

B

AB

+

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

*

AB

+*

½ºÅÿ¡ Ǫ½Ã. +°¡ *º¸´Ù ³·À¸¹Ç·Î ²¨³»Áö ¾ÊÀ½

C

ABC

+*

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

NULL

ABC*+

 

½ºÅÿ¡¼­ ¿ª¼øÀ¸·Î ²¨³¿.

 

+ ¿¬»êÀÚ¸¦ ¸¸³µÀ» ¶§ ÀÌ ¿¬»êÀÚ¸¦ Ãâ·Â ¹öÆÛ·Î ¹Ù·Î º¸³»Áö ¾Ê´Â ÀÌÀ¯´Â ¿À¸¥ÂÊÀÇ ÇÇ¿¬»êÀÚ(ÀÌ °æ¿ì B)¸¦ ¸ÕÀú ¹öÆÛ·Î º¸³»¾ß Çϱ⠶§¹®Àε¥ ÈÄÀ§½ÄÀº ÇÇ¿¬»êÀÚ µÑÀÌ ³ª¿Í¾ß ¿¬»êÀÚ°¡ ¿Ã ¼ö ÀÖ´Ù. ±×·¡¼­ ÀÚ½ÅÀº ¿ìº¯ ÇÇ¿¬»êÀÚ°¡ ³ª¿Ã ¶§±îÁö Àá½Ã ´ë±âÇØ¾ß Çϴµ¥ ±× Àå¼Ò°¡ ¹Ù·Î ½ºÅÃÀÌ´Ù. B¸¦ ¸¸³µÀ» ¶§ +¸¦ ¹öÆÛ·Î º¸³»Áö ¾Ê´Â ÀÌÀ¯´Â B°¡ ´Üµ¶À¸·Î +ÀÇ ¿ìº¯ÀÎÁö ¾Æ´Ï¸é B¸¦ Æ÷ÇÔÇÑ ¿¬»ê½ÄÀÌ +ÀÇ ¿ìº¯ÀÎÁö¸¦ ¾ÆÁ÷ È®½ÅÇÏÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. ÀÌ ½ÃÁ¡±îÁö ÀÐÀº A+B°¡ ¿¬»ê ¼øÀ§¿¡ ¸Â´ÂÁö ¾Æ´ÑÁö´Â µÚÂÊÀ» Á» ´õ ÀÐ¾î ºÁ¾ß ÇÑ´Ù.

* ¿¬»êÀÚµµ ¸¶Âù°¡Áö·Î ¾ÆÁ÷ ¿ìº¯ÀÌ ¾øÀ¸¹Ç·Î ½ºÅÿ¡ ´ë±âÇϴµ¥ À̶§ ¾ÕÂÊÀÇ ¿¬»êÀÚ +º¸´Ù´Â ÀÚ½ÅÀÌ ¿ì¼± ¼øÀ§°¡ ³ôÀ¸¹Ç·Î ¾ÕÀÇ +¸¦ ²¨³¾ Çʿ䰡 ¾ø´Ù. ÀÌ ´Ü°è¿¡¼­ °ö¼À ¿¬»êÀÌ ¸ÕÀú µÇ¾î¾ß ¾ÕÂÊÀÇ µ¡¼À ¿¬»êÀÌ °¡´ÉÇÏ´Ù´Â °ÍÀ» ¾Ë°Ô µÈ °ÍÀÌ´Ù. Áï, *´Â ÀÚ½ÅÀÇ ¿ìº¯À» ±â´Ù¸®°í ÀÖ´Â »óȲÀ̰í +´Â ÀÚ½ÅÀÇ ¿ìº¯ÀÎ * ¿¬»ê½ÄÀ» ±â´Ù¸®°í ÀÖ´Â »óȲÀÌ´Ù. ´ÙÀ½À¸·Î C¸¦ Ãâ·Â ¹öÆÛ·Î º¸³»°í ÀÔ·Â ¼ö½ÄÀº ³¡³­´Ù.

³¡À¸·Î ½ºÅÿ¡ ´ë±âÇϰí ÀÖ´ø ¿¬»êÀÚ¸¦ ¿ª¼øÀ¸·Î ÆËÇØ¼­ Ãâ·Â¹öÆÛ·Î º¸³½´Ù. ¿ª¼øÀ̹ǷΠ*°¡ ¸ÕÀú ÆËµÇ¾î B¿Í C¸¦ °öÇÏ´Â ¿¬»êÀ» ÇÏ°Ô µÇ¸ç ´ÙÀ½À¸·Î +°¡ ÆËµÇ¾î A¿Í B*C¸¦ ´õÇÏ°Ô µÈ´Ù. ´ÙÀ½Àº ºñ½ÁÇÑ ¼ö½Ä A*B+C¸¦ ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ù¾î º¸ÀÚ.

 

ÀÔ·Â ¹®ÀÚ

Ãâ·Â ¹öÆÛ

½ºÅÃ

¼³¸í

A

A

 

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

*

A

*

¿¬»êÀÚ´Â ½ºÅÿ¡ ÀúÀå

B

AB

*

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

+

AB*

+

+º¸´Ù *°¡ ³ôÀ¸¹Ç·Î *´Â ¸ÕÀú ²¨³½´Ù.

C

AB*C

+

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

NULL

AB*C+

 

³²Àº ¿¬»êÀÚ¸¦ ²¨³» Ãâ·ÂÇÑ´Ù.

 

¾ÕÀÇ ¼ö½Ä°ú´Â ¿¬»ê ¼øÀ§°¡ ´Ù¸¥µ¥ *°¡ ¸ÕÀú ¿À°í µÚ¿¡ +°¡ ¿Â´Ù. A°¡ Ãâ·Â ¹öÆÛ·Î °¡°í ´ÙÀ½À¸·Î ¿¬»êÀÚ *´Â ½ºÅÃÀ¸·Î, B°¡ Ãâ·Â ¹öÆÛ·Î ¸ÕÀú ³ª°£´Ù. ÀÌ »óÅ¿¡¼­ +¸¦ ¸¸³µÀ» ¶§ ¾ÕÂÊ¿¡ ´ë±âÇϰí ÀÖ´ø *¸¦ ¹Ù·Î Ãâ·ÂÇϴµ¥ +º¸´Ù´Â *°¡ ´õ ¿ì¼± ¼øÀ§°¡ ³ô±â ¶§¹®ÀÌ´Ù. Áï, +¸¦ ¸¸³µÀ» ¶§ ÀÌ¹Ì ±¸ÇØ ³õÀº µÎ °³ÀÇ ÇÇ¿¬»êÀÚ A, B°¡ *ÀÇ ÇÇ¿¬»êÀÚÀÓÀ» °áÁ¤ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¸ÕÀú ¿¬»êµÇµµ·Ï ÇÏ´Â °ÍÀÌ´Ù.

+ ¿¬»êÀÚ´Â µÚÂÊ¿¡ Àڽź¸´Ù ´ÊÀº ¿¬»êÀÚ°¡ ¾øÀ¸¹Ç·Î ¼ö½ÄÀÌ ³¡³¯ ¶§±îÁö ½ºÅÿ¡ ´ë±âÇÏ´Ù°¡ ¸¶Áö¸·À¸·Î ÆËµÇ¾î Á¦ÀÏ µÚ¿¡ ºÙ´Â´Ù. ±×·¡¼­ +´Â Àüü ¿¬»ê½Ä¿¡¼­ °¡Àå ¿ì¼± ¼øÀ§°¡ ´À¸®´Ù. ´ÙÀ½Àº °ýÈ£°¡ ÀÖ´Â (A+B)*C½ÄÀÇ °æ¿ì¸¦ º¸ÀÚ.

 

ÀÔ·Â ¹®ÀÚ

Ãâ·Â ¹öÆÛ

½ºÅÃ

¼³¸í

(

 

(

¿©´Â °ýÈ£´Â ¹Ù·Î Ǫ½Ã

A

A

(

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

+

A

(+

+ Ǫ½Ã. (º¸´Ù +°¡ ³ôÀ¸¹Ç·Î ÆËÇÒ ÇÊ¿ä¾ø´Ù.

B

AB

(+

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

)

AB+

 

¿©´Â °ýÈ£¸¦ ¸¸³¯ ¶§±îÁö ¸ðµç ¿¬»êÀÚ Ãâ·Â

*

AB+

*

* Ǫ½Ã

C

AB+C

*

¼ýÀÚ´Â ¹Ù·Î Ãâ·Â

NULL

AB+C*

 

³²Àº ¿¬»êÀÚ¸¦ ²¨³» Ãâ·ÂÇÑ´Ù.

 

µÚÂÊÀÇ *°¡ +º¸´Ù ¿ì¼± ¼øÀ§°¡ ³ôÁö¸¸ ´Ý´Â °ýÈ£¿¡ ÀÇÇØ °ýÈ£ ¾ÈÂÊÀÇ ¸ðµç ¿¬»êÀÚ°¡ °­Á¦ Ãâ·ÂµÇ¹Ç·Î ÀÌ °æ¿ì´Â +°¡ ¸ÕÀú ¿¬»êµÈ´Ù. °ýÈ£´Â ¾ÈÂÊÀÇ ¿¬»êÀÚ¸¦ ¿ì¼±ÀûÀ¸·Î ²¨³¿À¸·Î¼­ °ýÈ£ ¹Ù±ùÀÇ ¿¬»êÀÚº¸´Ù ¸ÕÀú ¿¬»êµÇµµ·Ï ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù.

MakePostfix

¿¹Á¦¿¡¼­ ÁßÀ§½ÄÀ» ÈÄÀ§½ÄÀ¸·Î º¯È¯ÇÏ´Â ÀÛ¾÷Àº MakePostfix¶ó´Â ÇÔ¼ö·Î ±¸ÇöÇϰí Àִµ¥ ÀÌ ÇÔ¼ö°¡ ÇÏ´Â ÀÏÀº ¾Õ¿¡¼­ ¼³¸íÇÑ °ø½ÄÀ» ±×´ë·Î ÄÚµå·Î ¿Å±ä °Í »ÓÀÌ´Ù. º¯È¯¿¡ ÇÊ¿äÇÑ ½ºÅÃÀ» »ý¼ºÇϰí ÀÔ·Â ¹öÆÛ Æ÷ÀÎÅÍ mÀ» µÚ·Î ÁøÇà½ÃŰ¸é¼­ ¸¸³ª´Â ¹®ÀÚº°·Î ±ÔÄ¢¿¡ µû¶ó ó¸®ÇÑ´Ù.

¼ýÀÚ´Â ÀÖ´Â ±×´ë·Î Ãâ·Â ¹öÆÛ·Î º¸³»µÇ ¿¬¼ÓµÇ´Â ¼ýÀÚ¸¦ ¸ðµÎ º¸³»¾ß ÇÑ´Ù. À̶§ ¼ýÀÚ¸¦ ±¸¼ºÇÏ´Â ¹®Àڷδ ¾Æ¶óºñ¾Æ ¼ýÀÚ¿Í ¼Ò¼öÁ¡ÀÌ ÀÖ´Ù. ¼ýÀÚ¸¦ ±¸¼ºÇÏ´Â ¸ðµç ¹®ÀÚ¸¦ Ãâ·Â ¹öÆÛ·Î º¸³½ ÈÄ °ø¹é Çϳª¸¦ ´õ º¸³½´Ù. ±×·¡¾ß ´ÙÀ½ ÇÇ¿¬»êÀÚ¿Í ÀÚ½ÅÀ» ±¸ºÐÇÒ ¼ö ÀÖ´Ù.

¿¬»êÀÚ¸¦ ¸¸³ª¸é Àڽź¸´Ù ³ôÀº ¿ì¼± ¼øÀ§ÀÇ ¿¬»êÀÚ¸¦ ¸ðµÎ ²¨³» Ãâ·ÂÇϵÇ, ´Ü ½ºÅà ¾ð´õÇ÷οì´Â Á¡°ËÇØ¾ß ÇÑ´Ù. ½ºÅÿ¡ ´ë±âÁßÀÎ ¿¬»êÀÚ°¡ ´õ ¾øÀ¸¸é À̶§´Â ¾Æ¹« °Íµµ ²¨³¾ Çʿ䰡 ¾ø´Ù. ±×¸®°í ÀÚ±â Àڽŵµ ´ÙÀ½ Â÷·Ê¸¦ À§ÇØ ½ºÅÿ¡ Ǫ½ÃµÈ´Ù.

¿©´Â °ýÈ£´Â ´Ü¼øÈ÷ Ǫ½Ã¸¸ ÇÏ°í ´Ý´Â °ýÈ£´Â ¿©´Â °ýÈ£°¡ ³ª¿Ã ¶§±îÁö ¸ðµç ¿¬»êÀÚ¸¦ ÆËÇØ¼­ Ãâ·ÂÇÏ°í ¿©´Â °ýÈ£´Â ¹ö¸°´Ù. ¿©´Â °ýÈ£¿Í ´ëÀÀµÇ´Â ´Ý´Â °ýÈ£ »çÀÌ¿¡ ÀÖ´Â ¸ðµç ¿¬»êÀÚ´Â °ýÈ£ ¹Ù±ùÀÇ ¿¬»êÀÚ¿Í´Â »ó°ü¾øÀÌ ¿ì¼±ÀûÀ¸·Î ¿¬»êµÇµµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ÀÌ °úÁ¤À» ÀÔ·Â ¹®ÀÚ¿­ÀÇ ³¡±îÁö ¹Ýº¹ ó¸®ÇÏ°í ½ºÅÿ¡ ³²¾Æ ÀÖ´Â ¿¬»êÀÚ¸¦ ÆËÇØ¼­ Ãâ·ÂÇϸé ÈÄÀ§½ÄÀÌ ¿Ï¼ºµÈ´Ù. ¸¶Áö¸·À¸·Î ÈÄÀ§½Ä ¹®ÀÚ¿­ ³¡¿¡ ³Î Á¾·á ¹®ÀÚ¸¦ ºÙÀ̰í Àӽà ½ºÅÃÀ» ÆÄ±«ÇÑ ÈÄ ¸®ÅÏÇß´Ù.

ÈÄÀ§½Ä °è»ê

¸¸µé¾îÁø ÈÄÀ§½ÄÀº ÀÌÁ¦ ±â°èÀûÀ¸·Î ¿¬»êÇϱ⸸ ÇÏ¸é µÈ´Ù. ÇÇ¿¬»êÀÚ°¡ ¸ÕÀú ³ª¿À°í ¿¬»êÀÚ°¡ ³ª¿À¹Ç·Î ¿ÞÂʺÎÅÍ ¼ø¼­´ë·Î ÀÐ¾î ³ª°¡´Ù°¡ ¿¬»êÀÚ¸¦ ¸¸³µÀ» ¶§ ¾ÕÂÊ µÎ ÇÇ¿¬»êÀÚ¸¦ ¿¬»êÇÏ¸é µÈ´Ù. °¡Àå °£´ÜÇÑ ½Ä AB+ÀÇ °æ¿ì A, B¸¦ ¸¸³¯ ¶§ ÀÌ ¼ýÀÚµéÀ» ±â¾ïÇØ µÎ¾ú´Ù°¡ +¸¦ ¸¸³µÀ» ¶§ A¿Í B¸¦ ´õÇÏ¸é µÈ´Ù. ±×·¯³ª À̰ͺ¸´Ù´Â Á¶±Ý ´õ º¹ÀâÇѵ¥ ÇÇ¿¬»êÀÚ°¡ ´Ù¸¥ ¿¬»ê½ÄÀÏ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù.

¿¹¸¦ µé¾î ABC+*ÀÇ °æ¿ì +´Â B¿Í C¸¦ ´õÇÏÁö¸¸ *´Â A¿Í B+C¸¦ °öÇØ¾ß ÇϹǷΠB+CÀÇ ¿¬»ê °á°ú¸¦ ±â´Ù¸° ÈÄ ±× °á°ú¿Í A¸¦ ¿¬»êÇØ¾ß ÇÑ´Ù. ´õ º¹ÀâÇÑ ¼ö½ÄÀÇ °æ¿ì´Â ¿¬»ê °á°ú³¢¸® ¿¬»êÇϰųª ÃÖÁ¾ ÇÇ¿¬»êÀÚ¸¦ ±¸Çϱâ Àü¿¡ ¼±ÇàµÇ¾î¾ß ÇÒ ¿¬»êÀÌ 3Áß, 4ÁßÀ¸·Î ÁßøµÉ ¼ö ÀÖ´Ù. ±×·¡¼­ ¿¬»êÀÚ¸¦ Àд Á·Á· ¿¬»êÀ» ÇÒ ¼ö ¾ø°í ¾ÕÂʺÎÅÍ Áß°£ °á°ú¸¦ ÀúÀåÇØ °¡¸é¼­ ¿¬»êÀ» ÇØ ¿Í¾ß ÇÑ´Ù.

À̶§ ¾ÕÂÊ ¿¬»êÀÇ °á°ú¸¦ ÀúÀåÇÏ´Â °÷ÀÌ ¹Ù·Î ½ºÅÃÀÌ´Ù. ½ºÅÃÀ» ÀÌ¿ëÇØ¼­ ÈÄÀ§½ÄÀ» ¿¬»êÇÏ´Â ÀýÂ÷´Â ºñ±³Àû °£´ÜÇÏ´Ù. °ýÈ£°¡ ¾øÀ¸¹Ç·Î ¿ÞÂʺÎÅÍ ¼ø¼­´ë·Î ÈÄÀ§½ÄÀ» ÀÐ¾î ¿À¸é ¼ýÀÚÀ̰ųª ¿¬»êÀÚ¹Û¿¡ ¾øÀ¸¸ç ÀÌ¿ÜÀÇ ¹®Àڷδ ¼ýÀÚ³¢¸® ±¸ºÐÀ» À§ÇØ »ðÀÔµÈ °ø¹é¹Û¿¡ ¾ø´Ù. °ø¹éÀº ´Ü¼øÈ÷ °Ç³Ê ¶Ù±â¸¸ ÇÏ¸é µÇ°í µÎ °æ¿ì¸¸ ´ÙÀ½°ú °°ÀÌ Ã³¸®ÇÑ´Ù.

 

¡á ¼ýÀÚ : ¼ýÀÚ·Î ÀνĵǴ ºÎºÐ¸¸Å­ Àо ½ºÅÿ¡ Ǫ½ÃÇÑ´Ù. atof ÇÔ¼ö·Î º¯È¯ÇÏ¸é ¼ýÀÚ·Î ÀÎÁ¤µÇ´Â ºÎºÐ±îÁö ÀÚµ¿À¸·Î º¯È¯µÇ¹Ç·Î ÀÌ ÇÔ¼ö·Î ÀÔ·Â ¹öÆÛ¸¦ ¼ýÀÚ·Î ¹Ù²ã Ǫ½ÃÇϱ⸸ ÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô ÀúÀåµÈ ¼ýÀÚ´Â ´ÙÀ½ ¿¬»êÀÚ¸¦ ¸¸³¯ ¶§ ÇÇ¿¬»êÀÚ·Î »ç¿ëµÈ´Ù. Ǫ½ÃÇÑ ¼ýÀÚ´Â °Ç³Ê ¶Ù¾î ÀÔ·Â ¹öÆÛÀÇ ´ÙÀ½ À§Ä¡¿¡ ¸ÂÃß¾î ³õ´Â´Ù.

¡á ¿¬»êÀÚ : ½ºÅÿ¡ ÀÖ´Â ÇÇ ¿¬»êÀÚ¸¦ µÎ °³ ²¨³» ¿¬»êÇÑ´Ù. ÀÔ·Â ¹öÆÛÀÇ ¾ÕÂʺÎÅÍ ¼ø¼­´ë·Î ÀÐ¾î ¿Ô´Ù¸é ½ºÅÿ¡´Â ÃÖ¼ÒÇÑ µÎ °³ ÀÌ»óÀÇ ¼ýÀÚ°¡ µé¾î ÀÖÀ¸¹Ç·Î ÀÌ °ªÀ» ²¨³» ¿¬»êÇϱ⸸ ÇÏ¸é µÈ´Ù. ¸ÕÀú ²¨³»´Â °ªÀÌ ¿ìº¯ÀÌ°í ³ªÁß¿¡ ²¨³»´Â °ªÀÌ Áº¯Àε¥ µ¡¼À, °ö¼ÀÀº ¼ø¼­°¡ Áß¿äÇÏÁö ¾ÊÁö¸¸ »¬¼À, ³ª´°¼ÀÀº ¼ø¼­¸¦ Àß ÁöÄÑ ¿¬»êÇØ¾ß ÇÑ´Ù. ¿¬»êµÈ °á°ú´Â ´Ù¸¥ ¿¬»ê½ÄÀÇ ÇÇ¿¬»êÀÚ°¡ µÉ ¼ö ÀÖÀ¸¹Ç·Î ´Ù½Ã ½ºÅÿ¡ ¹Ð¾î ³Ö¾î¾ß ÇÑ´Ù.

 

ÀÌ·± ½ÄÀ¸·Î ¸¸³ª´Â ¼ýÀÚ¿Í ¿¬»êÀÚ¸¦ ¼ø¼­´ë·Î ó¸®ÇÏ´Ù°¡ ³Î Á¾·á ¹®ÀÚ¸¦ ¸¸³µÀ» ¶§ ½ºÅÿ¡ ¸¶Áö¸·À¸·Î ³²¾Æ ÀÖ´Â °ªÀÌ ÃÖÁ¾ ¿¬»ê °á°úÀÌ´Ù. ¿ì¼± ¼øÀ§°¡ Á¦ÀÏ ´ÊÀº ¿¬»êÀÚ°¡ ³¡¿¡ ³²Àº µÎ ÇÇ¿¬»êÀÚ¸¦ ¿¬»êÇØ¼­ ½ºÅÿ¡ ´Ù½Ã ¹Ð¾î ³õ¾ÒÀ» °ÍÀ̹ǷΠ±× °á°ú¸¦ ÃëÇÏ¸é µÈ´Ù. Ư¼öÇÑ ¿¹¿Ü·Î ³ª´©±â ¿¬»ê¿¡¼­ ³ª´©´Â ¼ö°¡ 0ÀÎ °æ¿ì´Â °á°ú¸¦ 0À¸·Î Á¤ÀÇÇß´Ù.

ÀÌ ³í¸®¸¦ ±¸ÇöÇÑ ÇÔ¼ö°¡ ¿¹Á¦ÀÇ CalcPostfix ÇÔ¼öÀÌ´Ù. ÈÄÀ§½Ä ¿¬»êÀ» À§Çؼ­´Â Áß°£ °úÁ¤ÀÇ ÇÇ¿¬»êÀÚ¸¦ ½ºÅÿ¡ ÀúÀåÇØ¾ß ÇϹǷΠ½Ç¼ö ½ºÅÃÀ» ¸¸µé°í ÀÌ ½ºÅÿ¡ ¼ýÀÚµéÀ» Ǫ½Ã, ÆË Çϸ鼭 ¿¬»êÇß´Ù. ¿¹Á¦ÀÇ µÎ ¹øÂ° ¼ö½Ä "(34+93)*2-(43/2)"ÀÇ ÈÄÀ§½Ä "34 93 + 2 * 43 2 / -"ÀÇ ¿¬»ê °úÁ¤À» º¸¸é ´ÙÀ½°ú °°´Ù.

 

ÀÔ·Â ¹öÆÛ

½ºÅÃ

¼³¸í

34

34

¼ýÀÚ Çª½Ã

93

34 93

¼ýÀÚ Çª½Ã

+

127

34+93 ¿¬»ê ÈÄ Çª½Ã

2

127 2

¼ýÀÚ Çª½Ã

*

254

127*2 ¿¬»ê ÈÄ Çª½Ã

43

254 43

¼ýÀÚ Çª½Ã

2

254 43 2

¼ýÀÚ Çª½Ã

/

254 21.5

43/2 ¿¬»ê ÈÄ Çª½Ã

-

232.5

254-21.5 ¿¬»ê ÈÄ Çª½Ã

NULL

 

½ºÅÿ¡ ³²Àº 232.5¸¦ °á°ú·Î ÃëÇÔ

 

¼ýÀÚ´Â ¹«Á¶°Ç Ǫ½ÃÇÏ°í ¿¬»êÀÚ¸¦ ¸¸³¯ ¶§¸¶´Ù ÇÇ¿¬»êÀÚ µÑÀ» ¿¬»êÇϱ⸦ ³¡±îÁö ¹Ýº¹ÇÏ´Â °ÍÀÌ´Ù. ´Ü, Ư¼öÇÑ °æ¿ì·Î ¼ö½ÄÀÌ ºó ¹®ÀÚ¿­ÀÏ °æ¿ì¿¡´Â ½ºÅÿ¡ ¾Æ¹« °ªµµ µé¾î°¡Áö ¾ÊÀ¸¹Ç·Î 0À» ¸®ÅÏÇϵµ·Ï Çß´Ù. ºó ¼ö½ÄÀÇ °á°ú°ªÀº 0À¸·Î °è»êÇÏ´Â °ÍÀÌ ÇÕ´çÇÏ´Ù.

¿¹Á¦ Àüü ºÐ¼®

TextCalc ¿¹Á¦´Â »ó±â ºÐ¼®ÇÑ ¾Ë°í¸®Áò´ë·Î ÁßÀ§½ÄÀ» ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ù°í ÈÄÀ§½ÄÀ» ¿¬»êÇÏ¿© °á°ú¸¦ Ãâ·ÂÇÑ´Ù. ¹ü¿ëÀûÀÎ ¿¬»êÀÌ °¡´ÉÇϵµ·Ï Çϱâ À§ÇØ ½Ç¼ö¸¦ »ç¿ëÇߴµ¥ doubleÇüÀ̸é À¢¸¸Å­ Á¤¹ÐÇÑ ¿¬»êÀ» ¸ðµÎ ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à Á¤¼ö ¿¬»ê¸¸ ÇÏ°í ½Í´Ù¸é dStackÀ» Á¤¼öÇüÀ¸·Î ¹Ù²Ù°í ¼ýÀÚ¸¦ ÀоîµéÀÌ´Â ÇÔ¼ö atof ´ë½Å atoi¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ¶Ç´Â ÃÖÁ¾ °á°ú Ãâ·Â¹®ÀÎ printfÀÇ ¼­½ÄÀ» %.0f·Î¸¸ ¹Ù²Ù¾îµµ ºñ½ÁÇÑ È¿°ú¸¦ ³¾ ¼ö ÀÖ´Ù.

ÁßÀ§½ÄÀ» ÈÄÀ§½ÄÀ¸·Î ¹Ù²Ù°í ¿¬»ê±îÁö ÇÏ·Á¸é ¹ø°Å·Ó±â ¶§¹®¿¡ ÁßÀ§½ÄÀ» Àü´ÞÇϸé ÈÄÀ§½ÄÀ¸·Î ¹Ù²Û ÈÄ ¿¬»êÇÏ´Â ·¦ÆÛ ÇÔ¼ö CalcExp¸¦ ÀÛ¼ºÇß´Ù. ÀÌ ÇÔ¼ö´Â ¿¬»êÇϱâ Àü¿¡ ±âº»ÀûÀÎ ¿¡·¯ Á¡°ËÀ» Çϴµ¥ °ýÈ£ÀÇ Â¦ÀÌ ¸ÂÁö ¾ÊÀ» °æ¿ì ½ÇÆÐ¸¦ ¸®ÅÏÇÑ´Ù. ½ÇÆÐ ¸®ÅϰªÀ» ¹Þ°í ½ÍÀ¸¸é CalcExp¿¡ BOOLÇü º¯¼öÀÇ Æ÷ÀÎÅ͸¦ Àü´ÞÇÏ¿© ±× °á°ú¸¦ ¹ÞÀ» ¼ö ÀÖµÇ ½ÇÆÐ ¿©ºÎ¿¡ °ü½ÉÀÌ ¾øÀ¸¸é NULLÀ» Àü´ÞÇØµµ »ó°ü¾ø´Ù.

ÀÌ ¿¹Á¦´Â ÈÄÀ§½Ä º¯È¯À» À§ÇØ ±×¸®°í º¯È¯µÈ ÈÄÀ§½Ä °è»êÀ» À§ÇØ µÎ °³ÀÇ ½ºÅÃÀ» »ç¿ëÇÑ´Ù. ¿¬»êÀÚÀÇ °æ¿ì µÚÂÊÀ» ´õ ÀÐ¾î ºÁ¾ß Á¤È®ÇÑ ¿¬»ê ¼øÀ§¸¦ ¾Ë ¼ö ÀÖÀ¸¹Ç·Î ÀÚ±â Â÷·Ê°¡ µÉ ¶§±îÁö Àá½Ã ´ë±âÇØ¾ß ÇÏ¸ç °è»ê½ÄÀÇ °æ¿ì ºÎºÐ½ÄÀÇ °è»ê °á°ú°¡ À̾îÁö´Â ¿¬»êÀÚÀÇ ÇÇ¿¬»êÀÚ·Î »ç¿ëµÇ±â À§ÇØ ÀÓ½ÃÀûÀ¸·Î ÀúÀåµÇ¾î¾ß ÇÑ´Ù. ±×¸®°í ¿¬»êÀÚ¿Í ºÎºÐ½Ä ¸ðµÎ µé¾î°£ ¿ª¼øÀ¸·Î ²¨³»¾ß ÇϹǷΠ½ºÅÃÀÌ °¡Àå ÀûÀýÇÑ ÀÚ·á ±¸Á¶ÀÌ´Ù.

½ºÅÃÀÇ Å©±â´Â µÎ °æ¿ì ¸ðµÎ 256À¸·Î ¼³Á¤Çߴµ¥ ÀÌ Å©±â´Â °è»êÀ» À§Çؼ­ ¾ÆÁÖ ÃæºÐÇÑ Å©±â¶ó°í ÇÒ ¼ö ÀÖ´Ù. ¿¬»êÀÚ¿Í ºÎºÐ½ÄÀº ³ª¿À´Â Á·Á· Ǫ½ÃµÇ±â¸¸ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó Â÷·Ê°¡ µÇ¸é ÆËµÇ¾î ºüÁ® ³ª¿À¹Ç·Î 256À̶ó´Â ½ºÅà ũ±â´Â ó¸®ÇÒ ¼ö ÀÖ´Â ÃÖ´ë ¿¬»êÀÚ °³¼ö°¡ ¾Æ´Ï¶ó ÃÖ´ë Áßø °¡´É ȸ¼ö°¡ µÈ´Ù. ¾Æ¹«¸® ½ÄÀÌ º¹ÀâÇØ ºÁ¾ß 10´Ü°è ÀÌ»ó ÁßøµÇ´Â °æ¿ì´Â °ÅÀÇ ¾øÀ¸¹Ç·Î 256Á¤µµ¸é ÆãÆã ³²¾Æµ¹ Á¤µµÀÇ Å©±âÀÌ´Ù.

ÀÌ»óÀ¸·Î ½ºÅÃÀ» ÀÌ¿ëÇÑ °£´ÜÇÑ °è»ê±â ¿¹Á¦ Á¦ÀÛÀ» ¸¶Ä£´Ù. ¾Ë°í¸®ÁòÀÌ ³ª¸§´ë·Î º¹ÀâÇØ¼­ µÇµµ·Ï °£´ÜÇÏ°Ô ¸¸µé±â À§ÇØ ³ë·ÂÇߴµ¥ ±×·¯´Ù º¸´Ï ¸î °¡Áö ÇѰèÁ¡ÀÌ ÀÖ´Ù. ¿ì¼± ÀÌÇ× ¿¬»êÀÚ¸¸À» ´Ù·ëÀ¸·Î½á - ºÎÈ£ ¿¬»êÀÚ¸¦ ÀνÄÇÏÁö ¾Ê´Â´Ù. 3 + -2´Â 1·Î °è»êµÇ¾î¾ß ÇÏÁö¸¸ -À» ÀÌÇ× ¿¬»êÀÚ·Î ÀνÄÇϹǷΠƲ¸° °á°ú°¡ ³ª¿Ã °ÍÀÌ´Ù.

¶ÇÇÑ ´©½Â ¿¬»êÀÚÀÇ °æ¿ì ¿ìÃø ¿ì¼±ÀÇ °áÇÕ ¼ø¼­¸¦ °¡ÁöÁö¸¸ ÀÌ ¿¹Á¦´Â ÆíÀÇ»ó ÁÂÃø ¿ì¼±À¸·Î ó¸®Çß´Ù. ±×·¡¼­ µÎ ¹ø ¿¬°ÅǪ ´©½Â ¿¬»êÀ» ÇÒ °æ¿ì ¼öÇÐÀûÀÎ °è»ê°ú´Â Ʋ¸° °á°ú°¡ ³ª¿Â´Ù. 2^3^4´Â ¿ÞÂÊ ¿ì¼±ÀÏ ¶§ 8^4À¸·Î 4096ÀÌÁö¸¸ ¿À¸¥ÂÊ ¿ì¼±À̸é 2^81À¸·Î ¾öû³­ ¼ö°¡ µÈ´Ù.