본문 바로가기
코딩테스트 및 알고리즘

후위표기식 계산

by 영카이브 2024. 1. 16.

문제. 후위표기식이 주어지면 계산하고 결과를 출력하시오.

 

입력예시 

352+*9-

 

답 : 12

 

나의 답변

public class Main {	
	public int solution(String str) {
		int answer = 0; 
		Stack<Integer> stack = new Stack<>();
		for( char x : str.toCharArray()) {
			if(Character.isDigit(x)) {
				stack.push(Character.getNumericValue(x)); 
			}else {
				int b = stack.pop();
				int a = stack.pop();
				switch(x) {
				case '+':
					stack.push(a+b); 
					break;
				case '-':
					stack.push(a-b);
					break;
				case '*':
					stack.push(a*b);
					break;
				case '/':
					stack.push(a/b);
					break;
				}
			}
		}
		answer = stack.pop();
		return answer; 
	}
	public static void main(String[] args) {
		Main T = new Main();
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		System.out.print(T.solution(s));
	}
}

 

 

다른 방법

  • Character.getNumericValue(x) 대신 아스키코드를 사용하여 x-48
  • switch-case 문 대신 if문 사용

 

중위표기식은 우리가 계산 시 일반적으로 사용하는 수식표기법이며 사람이 이해하기 쉽다.

후위표기식은 연산자가 뒤에 위치하며 컴퓨터가 이해하기 쉽다.

 

후위표기식 사용하는 이유

  • 괄호를 쓰지 않고 계산하는 내용을 나타낼 수 있다.
  • 괄호를 쓰지 않아 수식을 끝까지 읽지않고 바로바로 읽으면서 계산이 가능하다.
  • 후위표기식 자체에 연산자의 우선순위가 표기되어 따로 생각할 필요가 없다. 

 

'코딩테스트 및 알고리즘' 카테고리의 다른 글

공주 구하기  (0) 2024.01.20
쇠막대기와 레이저  (0) 2024.01.18
Stack  (0) 2024.01.14
소괄호 사이에 문자 제거 후 남은 문자 구하기  (0) 2024.01.11
올바른 괄호  (0) 2024.01.10