Stack問題(ALDS1_3_A)

ネットワークを使ったdataのやりとりが全然進まず、自己嫌悪に陥ったので、以下の問題をやりました。

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_3_A

逆ポーランド記号の問題?
ただプッシュして、計算するだけなので、簡単だった。
ただ答えには、最後改行がないとpresentation errorがでるので、
注意が必要です。

冗長性がありますが、めんどくさい


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

class Main {
static StringBuilder builder = new StringBuilder();

public static void main(String[] args) throws NumberFormatException,
IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
final String[] str = reader.readLine().split(" ");

System.out.println(String.valueOf(getReversePolishResult(str)));
}

private static int getReversePolishResult(final String str[]){
ArrayList list = new ArrayList();
for(int i = 0;i < str.length;++i){ final int lastIndex = list.size(); switch(str[i].charAt(0)){ case '+':{ final int num = list.get(lastIndex - 2) + list.get(lastIndex - 1); list.remove(lastIndex - 1); list.remove(lastIndex - 2); list.add(num); break; } case '-':{ final int num = list.get(lastIndex - 2) - list.get(lastIndex - 1); list.remove(lastIndex - 1); list.remove(lastIndex - 2); list.add(num); break; } case '*':{ final int num = list.get(lastIndex - 2) * list.get(lastIndex - 1); list.remove(lastIndex - 1); list.remove(lastIndex - 2); list.add(num); break; } default: list.add(Integer.parseInt(str[i])); break; } } return list.get(0); } }

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です