🌷🌼λͺ¨μ—¬λ΄μš” 개발의숲🌷🌼

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] ν›„μœ„μ‹ μ—°μ‚°(postfix) λ³Έλ¬Έ

개발/μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ JAVA

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] ν›„μœ„μ‹ μ—°μ‚°(postfix)

μš”μΌμ΄ 2021. 6. 6. 23:55
λ°˜μ‘ν˜•

μ„€λͺ…

ν›„μœ„μ—°μ‚°μ‹μ΄ 주어지면 μ—°μ‚°ν•œ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

λ§Œμ•½ 3*(5+2)-9 을 ν›„μœ„μ—°μ‚°μ‹μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ 352+*9- 둜 ν‘œν˜„λ˜λ©° κ·Έ κ²°κ³ΌλŠ” 12μž…λ‹ˆλ‹€.

μž…λ ₯

첫 쀄에 ν›„μœ„μ—°μ‚°μ‹μ΄ μ£Όμ–΄μ§‘λ‹ˆλ‹€. μ—°μ‚°μ‹μ˜ κΈΈμ΄λŠ” 50을 λ„˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

식은 1~9의 μˆ«μžμ™€ +, -, *, / μ—°μ‚°μžλ‘œλ§Œ 이루어진닀.

좜λ ₯

μ—°μ‚°ν•œ κ²°κ³Όλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ μž…λ ₯ μ˜ˆμ‹œ 좜λ ₯
352+*9- 12

 

 

 

풀이

import java.util.*;

public class Main {
	
	public void solution(String str) {
	
		
		int result = 0;
		int a = 0, b = 0, z = 0;
		Stack <Integer> stack = new Stack<>();
		
		for(char x : str.toCharArray()) {
			
			// 연산식이면
			if(isOperator(x)) {
				
				b = stack.pop();
				a = stack.pop();
				
				z = postFix(a, b, x);
			
				stack.push(z);
			
				// 연산식이 μ•„λ‹ˆλ©΄
			}else {
				stack.push(Character.getNumericValue(x));	
			}
		}
		
		result = stack.pop();
		
		System.out.println(result);
		
	}
	
	public boolean isOperator(char c) {
		if(c == '+' || c=='-' || c=='*' || c == '/' || c == '%') {
			return true;
		}
		return false;
	}
	
	public int postFix(int a, int b, char oper) {
		
		if(oper == '+') {
			return a+b;	
		}else if(oper == '-'){
			return a-b;
		}else if(oper == '*'){
			return a*b;
		}else if(oper == '/'){
			return a/b;
		}else{
			return a%b;
		}
			
	}
	
  
	public static void main(String args[]) {
        Main main = new Main();
		
        Scanner in= new Scanner(System.in);
        
		String str = in.nextLine();
		
        main.solution(str);
    }

}
Comments