ÄÄÇ»ÅÍ´Â °è»êÀ» ÇÏ´Â ±â°èÀ̹ǷΠ´ç¿¬È÷ º¹ÀâÇÑ ¼ö½Äµµ °è»êÇÒ ¼ö ÀÖ´Ù. À̶§ °è»ê½ÄÀº »ç¶÷À¸·ÎºÎÅÍ ÁÖ¾îÁö´Âµ¥ Űº¸µå·Î ÀÔ·ÂµÈ ¹®ÀÚ¿¿¡¼ ¼ýÀÚ¿Í ¿¬»êÀÚ¸¦ ÃßÃâÇØ¼ °è»êÇØ¾ß ÇÏ´Â °æ¿ì°¡ ¸¹´Ù. º¹ÀâÇÑ ¼ö½Ä ¹®ÀÚ¿À» ¼öÄ¡·Î º¯È¯Çؼ °è»êÇÏ´Â ½Ç½ÀÀ» ÇØ º¸ÀÚ.
°¡Àå °£´ÜÇÑ ¼ö½ÄÀ¸·Î "1+2"°¡ ÁÖ¾îÁ³´Ù°í ÇØ º¸ÀÚ. ÀÌ ¼ö½ÄÀ» Ç®·Á¸é atoi µîÀÇ ÇÔ¼ö·Î ¼ýÀÚ 1 °ú 2¸¦ ÃßÃâÇÏ°í µ¡¼À ¿¬»êÀÚ +¸¦ ÃßÃâÇÏ¿© ¾çº¯ÀÇ ¼ö¸¦ »ê¼úÀûÀ¸·Î ´õÇØ 3À̶ó´Â °á°ú¸¦ ¸¸µé¸é µÈ´Ù. ¹®ÀÚ¿À» ¼ø¼´ë·Î ÀÐÀ¸·Á¸é Æ÷ÀÎÅÍ·Î ¿ÞÂʺÎÅÍ ¹®ÀÚµéÀ» ½ºÄµÇØ¾ß Çϴµ¥ ÀÌ Á¤µµ ¼ö½ÄÀ̶ó¸é ¾î·ÆÁö ¾Ê°Ô °è»êÇÒ ¼ö ÀÖ´Ù. Á¶±Ý ´õ º¹ÀâÇÑ "1+2*3" ¿¬»ê½ÄÀº ¿ì¼± ¼øÀ§¸¦ °í·ÁÇØ¾ß ÇϹǷΠ»ý°¢Ã³·³ ½±Áö ¾Ê´Ù. Á¤´äÀº 7ÀÌµÇ ¹®ÀÚ¿À» ¼ø¼´ë·Î ÀÐÀ¸¸é¼ °è»êÇÏ´Â ´Ü¼øÇÑ ¹æ¹ýÀ» »ç¿ëÇϸé 9¶ó´Â ¿À´äÀÌ ³ª¿Ã ¼öµµ ÀÖ´Ù.
±×·¸´Ù¸é ´õ º¹ÀâÇÑ ½Ä "23+35*8-(4+2)/3"À» º¸ÀÚ. ¿¬»ê ¼øÀ§µµ °í·ÁÇØ¾ß ÇÏ°í µÎ ÀÚ¸®¼ö ÀÌ»óµµ ÀÖ°í °Á¦·Î ¼øÀ§¸¦ ¹Ù²Ù´Â °ýÈ£±îÁö ÀÖ¾î ¹®ÀÚ¿ ½ºÄµ Á¤µµ ¼öÁØÀ¸·Î´Â ¾öµÎ°¡ ³ªÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ·± º¹ÀâÇÑ ¼ö½ÄÀ» Ç®·Á¸é ¾à°£ÀÇ ¹ß»ó ÀüȯÀÌ ÇÊ¿äÇÏ´Ù.
¹®ÀÚ¿ ÇüÅ·ΠÁÖ¾îÁø ¼ö½ÄÀ» °è»êÇÏ´Â ¾Ë°í¸®ÁòÀº ¸¹ÀÌ °³¹ßµÇ¾î Àִµ¥ ¿©±â¼´Â ½ºÅÃÀ» ÀÌ¿ëÇØ¼ ¹®Á¦¸¦ Ç®¾î º¸µµ·Ï ÇÏÀÚ. ÀÏ´Ü Àüü ¼Ò½º¸¦ º¸ÀδÙ.
|
¿¹ Á¦ : 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¶ó´Â ÇÔ¼ö·Î ±¸ÇöÇϰí Àִµ¥ ÀÌ ÇÔ¼ö°¡ ÇÏ´Â ÀÏÀº ¾Õ¿¡¼ ¼³¸íÇÑ °ø½ÄÀ» ±×´ë·Î ÄÚµå·Î ¿Å±ä °Í »ÓÀÌ´Ù. º¯È¯¿¡ ÇÊ¿äÇÑ ½ºÅÃÀ» »ý¼ºÇϰí ÀÔ·Â ¹öÆÛ Æ÷ÀÎÅÍ 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À¸·Î ¾öû³ ¼ö°¡ µÈ´Ù.