페이지

1918번: 후위표기식

https://www.acmicpc.net/problem/1918


#include<stdio.h>
#include<string.h>
char data[100], print[100], stack[100];
int pcnt, scnt, len;
int main()
{
    int i;
    scanf("%s", &data[1]);
    len = strlen(&data[1]);
    for (i = 1; i <= len; i++)
    {
        if (data[i] >= 'A'&&data[i] <= 'Z')
        {
            print[++pcnt] = data[i];
        }
        else if (data[i] == '(')
        {
            stack[++scnt] = data[i];
        }
        else if (data[i] == ')')
        {
            while (stack[scnt] != '('&&scnt != 0)
            {
                print[++pcnt] = stack[scnt--];
            }
            if (stack[scnt] == '(') scnt--;
        }
        else if (data[i] == '*' || data[i] == '/')
        {
            while (stack[scnt] != '+'&&stack[scnt] != '-'&&stack[scnt] != '('&&scnt != 0)
            {
                print[++pcnt] = stack[scnt--];
            }
            stack[++scnt] = data[i];
        }
        else
        {
            while (stack[scnt] != '('&&scnt != 0)
            {
                print[++pcnt] = stack[scnt--];
            }
            stack[++scnt] = data[i];
        }
    }
    while (scnt != 0)
    {
        if (stack[scnt] == '(')
        {
            scnt--;
        }
        else
        {
            print[++pcnt] = stack[scnt--];
        }
    }
    printf("%s", &print[1]);
    return 0;
}

댓글 없음 :

댓글 쓰기