1 λΆ„ μ†Œμš”

πŸ“ [D4_1223] 계산기2

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 temp = "";

	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("*")) {
					temp = stack.pop();
					continue;
				}
				else if(stack.peek().equals("+")) {
					continue;
				}
				// 숫자인 경우
				else {
					if(temp.equals("*")) {
						int sum = Integer.parseInt(stack.pop())*Integer.parseInt(stack.pop());
						stack.add(String.valueOf(sum));
						temp = "";
					}
					else {
						continue;
					}
				}
			}
			
			int sum =0;
			int size= stack.size();
			for(int i=0; i<size; i++) {
				// μ—°μ‚°μž λ§Œλ‚¬μ„ λ•Œ
				if(stack.peek().equals("+")) {
					stack.pop();
					continue;
				}
				// 숫자인 경우
				else {
					 sum += Integer.parseInt(stack.pop());
				}
			}
			
			sb.append(sum);
			sb.append("\n");
		}
		System.out.println(sb);
	}
}

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

이 λ¬Έμ œλ„ κ΅¬μ‘°λŠ” λ™μΌν•˜λ‹€. κ·ΈλŸ¬λ‚˜ β€œ*β€œμ΄ μΆ”κ°€λ˜μ—ˆλ‹€.
전체 λ¬Έμžμ—΄μ„ μˆœμ„œλŒ€λ‘œ STACK에 받아와 μ—°μ‚°μžλ₯Ό λ§Œλ‚˜λ©΄ pop ν•˜μ—¬ λ°”λ‘œ 계산해주도둝 ν•˜μ˜€λ‹€.
μ—¬κΈ°μ„œ μ£Όμ˜ν•  점은 μ—°μ‚°μˆœμ„œμ΄λ‹€. κ³±μ…ˆμ΄ λ§μ…ˆλ³΄λ‹€ 먼저이기 λ•Œλ¬Έμ—
λ‚˜λŠ” κ³±μ…ˆ 연산을 λ‹€ν•΄μ€€ λ’€ 남은 것을 가지고 λ§μ…ˆμ—°μ‚°μ„ ν•΄μ£Όμ—ˆλ‹€.
λ§μ…ˆ μ—°μ‚°μž λΆ€λΆ„μ—μ„œ stack.size()κ°€ popλ•Œλ¬Έμ— 계속 λ³€ν•œλ‹€λŠ” 것을 μƒκ°ν•˜μ§€ λͺ»ν•΄μ„œ μ• λ₯Ό λ¨Ήμ—ˆλ‹€.
κ·Έλž˜μ„œ sizeλΌλŠ” λ³€μˆ˜λ₯Ό 톡해 처음 μ‚¬μ΄μ¦ˆλ‘œ κ³ μ •μ‹œμΌœ μ£Όμ—ˆλ‹€.