2025-10-23 23:29:19 +09:00

36 lines
888 B
TypeScript

export {};
const str = require("fs").readFileSync(0,'utf8').toString().trim();
let op: string[] = []
let result: string = '';
const peek = (arr: string[]): string => arr[arr.length-1];
const opPriority = (op: string): number => {
if(op === '+' || op === '-') return 1;
else if(op === '*' || op === '/') return 2;
else return 0;
};
for(let c of str) {
if('A'<= c && c<='Z') result += c;
else {
if(c === '(') op.push(c);
else if(c === ')') {
while(op.length !== 0 && peek(op) != '(') {
result += op.pop();
}
if(op.length !== 0) op.pop();
}
else {
while(op.length !== 0 && opPriority(peek(op)) >= opPriority(c)) {
result += op.pop();
}
op.push(c);
}
}
}
while(op.length !== 0) result += op.pop();
console.log(result);