結果
問題 | No.708 (+ー)の式 |
ユーザー |
|
提出日時 | 2018-09-17 10:14:18 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 125 ms / 2,000 ms |
コード長 | 1,883 bytes |
コンパイル時間 | 3,773 ms |
コンパイル使用メモリ | 79,652 KB |
実行使用メモリ | 41,660 KB |
最終ジャッジ日時 | 2024-07-18 07:35:58 |
合計ジャッジ時間 | 6,372 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 12 |
ソースコード
import java.io.*;import java.util.*;public class Main_yukicoder708 {private static Scanner sc;private static Printer pr;private static void solve() {char[] s = sc.next().toCharArray();int n = s.length;Deque<String> q = new ArrayDeque<>();q.addLast("0");q.addLast("+");for (int i = 0; i < n; i++) {char c = s[i];if (c >= '0' && c <= '9') {int num = c - '0';if (q.peekLast().equals("+")) {q.removeLast();int tmp = Integer.parseInt(q.removeLast());tmp += num;q.addLast(Integer.toString(tmp));} else if (q.peekLast().equals("-")) {q.removeLast();int tmp = Integer.parseInt(q.removeLast());tmp -= num;q.addLast(Integer.toString(tmp));} else if (q.peekLast().equals("(")) {q.addLast(Integer.toString(num));}} else if (c == '+') {q.addLast("+");} else if (c == '-') {q.addLast("-");} else if (c == '(') {q.addLast("(");} else if (c == ')') {int num = Integer.parseInt(q.removeLast());q.removeLast(); // '('if (q.peekLast().equals("+")) {q.removeLast();int tmp = Integer.parseInt(q.removeLast());tmp += num;q.addLast(Integer.toString(tmp));} else if (q.peekLast().equals("-")) {q.removeLast();int tmp = Integer.parseInt(q.removeLast());tmp -= num;q.addLast(Integer.toString(tmp));}}}pr.println(Integer.parseInt(q.peekLast()));}// ---------------------------------------------------public static void main(String[] args) {sc = new Scanner(INPUT == null ? System.in : new ByteArrayInputStream(INPUT.getBytes()));pr = new Printer(System.out);solve();// pr.close();pr.flush();// sc.close();}static String INPUT = null;private static class Printer extends PrintWriter {Printer(OutputStream out) {super(out);}}}