- ÀÛ¼ºÀÚ : À̽Âö
¿ª Æú¶õµå ±â¹ý(reverse polish notation)Àº ÀÌ ±â¹ýÀ» °í¾ÈÇØ³½ Æú¶õµåÀÇ ¼öÇÐÀÚ.. ·çÄ«..(¾Æ, °©ÀÚ±â À̸§ÀÌ »ý°¢ ¾È ³ª³×¿ä..--;). ¾Ïư Æú¶õµåÀÇ ¼öÇÐÀÚ°¡ °í¾ÈÇß´Ù°í ÇØ¼ ¿ª Æú¶õµå ±â¹ýÀ̶ó°í ÇÕ´Ï´Ù.
Àü¿¡ Æ®¸®±¸Á¶¸¦ °øºÎÇÒ ¶§ Æ®¸®¸¦ ¼øÇàÇÏ´Â ¹æ¹ý¿¡´Â preorder, inorder, postorder °¡ ÀÖ´Ù°í Çß½À´Ï´Ù. ÀÌ ¿ª Æú¶õµå ±â¹ýÀº postorder¸¦ ÀÌ¿ëÇÏ°Ô µË´Ï´Ù. ±×·¡¼ ¿ª Æú¶õµå ±â¹ýÀ» ÈÄÀ§ ±â¹ý(postfix notation)À̶ó°íµµ ÇÕ´Ï´Ù.
ÀϹÝÀûÀ¸·Î ¿ì¸®´Â ½ÄÀ» ¾µ ¶§,
3 + 1 + 2 * 4 - 3 / 5
ÀÌ·± ½ÄÀ¸·Î ½ÄÀ» ¾Ã´Ï´Ù. À̰ÍÀº inorder·Î ¼øÇàÀ» ÇÑ °æ¿ó´Ï´Ù. ¸¸¾à ÀÌ°É ¿ª Æú¶õµå ±â¹ýÀ¸·Î Çϸé,
3 1 + 2 4 * + 3 5 / -
ÀÌ·¸°Ô µË´Ï´Ù. ¿ì¸®°¡ º¸±â¿¡´Â ¾Ë¾Æº¸±â ÈûµéÁÒ? ±×·¯³ª ÄÄÇ»ÅÍÇÑÅ× °è»êÀ» ½Ãų ¶§´Â ÀÌ·¸°Ô º¯È¯½ÃŰ´Â°Ô ÈξÀ ÆíÇØÁý´Ï´Ù. ¿Ö³ÄÇϸé À̰ÍÀº ´ÙÀ½°ú °°Àº ¸»·Î Ç¥ÇöÇÒ ¼ö Àֱ⠶§¹®¿¡ "3°ú 1À» ´õÇÑ °Í¿¡ 2¿Í 4¸¦ °öÇÑ °ÍÀ» ´õÇϰí 3À» 5·Î ³ª´« °ÍÀ» »«´Ù." Áï, ±×³É ¼ø¼´ë·Î ÂÞ~¿í ÀÐ¾î ³ª°¡¸é µÇ¾î¼ ÇÁ·Î±×·¥À» © ¶§´Â ±×³É ¼ø¼´ë·Î ¹ÞÀ¸¸é¼ ó¸®ÇØ ³ª°¡¸é µË´Ï´Ù.
±× ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
ÀÏ´Ü °¢ ¿ä¼Ò¿¡ ´ÙÀ½ÀÇ Ç¥°°ÀÌ ¿ì¼±¼øÀ§¸¦ ¼³Á¤ÇÕ´Ï´Ù.
|
¿ì¼±¼øÀ§(priority) |
¿ä¼Ò(factor) |
|
1 |
+, - |
|
2 |
*, / |
|
3 |
ÇÇ¿¬»êÀÚ(operand) |
Stack1, Stack2¸¦ ¸¸µé°í ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
¿ÞÂÊ¿¡¼ºÎÅÍ ÇÑ °³ÀÇ ¿ä¼Ò¾¿ ÀÐÀ¸¸é¼ ´ÙÀ½À» ¹Ýº¹ÇÑ´Ù.
begin
while ÀÐÀº ¿ä¼ÒÀÇ ¿ì¼±¼øÀ§ <= Stack1 °¡Àå À§¿¡ ÀÖ´Â ¿ä¼ÒÀÇ ¿ì¼±¼øÀ§
begin
Stack1 °¡Àå À§¿¡ ÀÖ´Â ¿ä¼Ò¸¦ PopÇØ¼ Stack2¿¡ PushÇÑ´Ù.
ÀÐÀº ¿ä¼Ò¸¦ Stack1¿¡ PushÇÑ´Ù.
end;
end;
Stack1¿¡ ³²¾ÆÀÖ´Â ¿ä¼ÒµéÀ» PopÇØ¼ Stack2¿¡ PushÇÑ´Ù.
ÀÌ ¾Ë°í¸®ÁòÀ» ½ÇÇàÇÏ°Ô µÇ¸é ´ÙÀ½°ú ±×¸²°ú °°ÀÌ µË´Ï´Ù.
ÀÌÁ¦ Stack2¿¡ ÀÖ´Â °ÍÀ» »©³»¸é
3 1 + 2 4 * + 3 5 / -
ÀÌ·¸°Ô µÆ½À´Ï´Ù. ÀÌÁ¦´Â À̰ÍÀ» ÀÌ¿ëÇØ¼ °è»êÀ» ÇØ¾ß°ÚÁÒ? ÀÌ°É °è»êÇÒ ¶§´Â ÆÄ½Ì(Parsing)À̶õ ¹æ¹ýÀ» ¾¹´Ï´Ù. ParsingÀº 'ºÐ¼®'À̶õ ¶æÀÔ´Ï´Ù. ±×·¯´Ï±î ÁÖ¾îÁø ¹®ÀÚ¿À» ºÐ¼®Çؼ °è»êÀ» ÇÑ´Ù´Â °ÍÀÌÁÒ. À§¿¡¼µµ ¾ð±ÞµÇ¾úÁö¸¸ ÈÄÀ§±â¹ýÀ» ¾²¸é ±×³É ÀÐÀ¸¸é¼ °è»êÀ» ÇØ ³ª°¥ ¼ö ÀÖ½À´Ï´Ù. '3°ú 1À» +ÇØ¼ 2¿Í 4¸¦ *ÇÑ °ÍÀ» +Çϰí 3°ú 5¸¦ /ÇÑ °ÍÀ» -ÇÑ´Ù.' ÀÌ·±½ÄÀ¸·Î Ç¥ÇöÇÒ ¼ö Àֱ⠶§¹®ÀÌÁÒ. ÀоîµéÀÎ ¿ä¼Ò°¡ ÇÇ¿¬»êÀÚ(operand)À̸é ÀúÀåÇØ µ×´Ù°¡ ¿¬»êÀÚ(ope)°¡ ³ª¿À¸é ±× ÀúÀåÇØµÐ ÇÇ¿¬»êÀÚ(operand)¸¦ °¡Áö°í ¿¬»êÀ» ÇÏ¸é µÇ´Â °ÍÀÌÁÒ. ±× ÀúÀåÇØµÎ´Â °÷À» t¶ó´Â ½ºÅÃÀ¸·Î ÇÏÁÒ. ±× ¼ø¼´Â ´ÙÀ½°ú °°½À´Ï´Ù.
Stack2ÀÌ ¿ÏÀü ºô¶§±îÁö ´ÙÀ½À» ¹Ýº¹ÇÑ´Ù.
begin
Stack2¿¡¼ ¿ä¼ÒÇϳª¸¦ ²ôÁý¾î ³½´Ù.
if ²ôÁý¾î³½ ¿ä¼Ò°¡ ÇÇ¿¬»êÀÚ then
t¿¡ ±× ¿ä¼Ò¸¦ Áý¾î ³Ö´Â´Ù.
if ¿¬»êÀÚ then
t¿¡ ÃÖ»óÀ§ ¿ä¼Ò(t[p])¿Í ±× ¹Ù·Î ¾Æ·¡ ÀÖ´Â ¿ä¼Ò(t[p-1])¸¦ °è»êÇÏ¿© t[p-1]¿¡ ³Ö´Â´Ù.
end;
±×·±µ¥ ÀÌ·¸°Ô¸¸ ÇØ¼´Â °ýÈ£°¡ ÀÖ´Â ½ÄÀº °è»ê ÇÒ ¼ö ¾ø½À´Ï´Ù. °ýÈ£±îÁö ó¸®Çس»´Â ÇÁ·Î±×·¥Àº Á÷Á¢ Â¥º¸½Ã±æ
¹Ù¶ø´Ï´Ù. ÈùÆ®¸¦ µå¸®ÀÚ¸é '('ÀÇ ¿ì¼±¼øÀ§¸¦ °¡Àå ³ôÀº ¼ö·Î ³õ°í ')'ÀÇ ¿ì¼±¼øÀ§¸¦ °¡Àå ³·Àº ¼ö·Î ³õÀ¸¸é »ó´çÈ÷
½¬¿öÁý´Ï´Ù. ¶Ç °ýÈ£´Â ÈÄÀ§±â¹ýÀ¸·Î Ç¥ÇöÇÒ¶§ ³ª¿Ã ÇÊ¿ä ¾ø½À´Ï´Ù. ±×·¯´Ï±î ¿¹¸¦ µé¾î,
3 + (1 + 2) * (4 - 3) / 5
ÀÌ·±°Ô ÀÖ´Ù¸é
3 1 2 + 4 3 - * 5 / +
ÀÌ·¸°Ô µÇ´Â °ÍÀÔ´Ï´Ù. "3¿¡ 1°ú 2¸¦ ´õÇÑ °ÍÀ» 4¿¡¼ 3À» »« °ÍÀ» °öÇϰí 5·Î ³ª´« °ÍÀ» ´õÇÑ´Ù." ÀÌ·¸°Ô µË´Ï´Ù. ±×·³ Á÷Á¢ ÄÚµùÇØ º¸½Ã±æ ¹Ù¶ø´Ï´Ù. ±×·³ À̸¸.