μ΅œλŒ€ 1 λΆ„ μ†Œμš”

πŸ“ [D4_1222] 계산기1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Solution{
	static StringTokenizer st;
	static String num;

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		for (int t = 1; t <= 10; t++) {
			sb.append("#").append(t).append(" ");
			
			// 계산식 길이
			int N = Integer.parseInt(br.readLine());
			
			// λ¬Έμžμ—΄
			String str = br.readLine();
			

			Stack<String> stack = new Stack<String>();

			// 첫번째 수 μž…λ ₯
			stack.add(String.valueOf(str.charAt(0)));
			
			for (int i = 1; i < N; i++) {
				
				stack.add(String.valueOf(str.charAt(i)));
				
				// μ—°μ‚°μž λ§Œλ‚¬μ„ λ•Œ
				if(stack.peek().equals("+")) {
					stack.pop();
					continue;
				}
				// 숫자인 경우
				else {
					int sum = Integer.parseInt(stack.pop())+Integer.parseInt(stack.pop());
					stack.add(String.valueOf(sum));
				}
			}
			
			sb.append(stack.pop());
			sb.append("\n");
		}
		System.out.println(sb);
	}
}

πŸ€” λ‚˜μ˜ 생각

전체 λ¬Έμžμ—΄μ„ μˆœμ„œλŒ€λ‘œ STACK에 받아와 μ—°μ‚°μžλ₯Ό λ§Œλ‚˜λ©΄ pop ν•˜μ—¬ λ°”λ‘œ 계산해주도둝 ν•˜μ˜€λ‹€.
이 λ¬Έμ œλŠ” β€œ+” 밖에 μ—†μ—ˆκΈ° λ•Œλ¬Έμ— κ°„λ‹¨ν•˜κ²Œ ν’€λ Έλ‹€.