足跡-sokuseki-

りかの日進月歩の記録

COLOCON -Colopl programming contest 2018- Final B 異世界数式

B - 異世界数式

これ自力で思いつけたの嬉しい。

問題概要

数式  S が、単なる数字の列か、もしくは演算子 (+, -, *, / のいずれか) の直後で括弧(() を開き、その中に数式をいくつかカンマ (,) で区切って並べ、その後括弧 ()) を閉じるという形式で表されている。
この数式を通常の中置記法の数式に変換せよ。

制約
 1 \le |S| \le 10^5

解法

'+' '-' '*' '/'のいずれかの演算子が現れたとき、その演算子を使うのは、直後の括弧の中だけなので、スタックに積んでおき、','が現れたらスタックの一番上の演算子に置き換え、括弧が閉じたらスタックの一番上を廃棄すればよい。
さいごに、もともと数式に存在した括弧の直前の演算子を取り除けば良い(スタックに積む時に取り除いてもいいけど面倒)。

Submission #2164590 - COLOCON -Colopl programming contest 2018- Final(オープンコンテスト)