#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; }
1918번: 후위표기식
https://www.acmicpc.net/problem/1918
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기