본문 바로가기

백준

BOJ[JAVA] 1935 후위 표기식2

https://www.acmicpc.net/problem/1935

 

1935번: 후위 표기식2

첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이

www.acmicpc.net

 

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
import java.util.Stack;
public class Main{
    public static void main(String args[]) throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	int N = Integer.parseInt(br.readLine());
    	Stack<Double> num_stack = new Stack<Double>();
    	String word = br.readLine();
    	double count[] = new double[26];
    	for(int i=0; i<word.length(); i++) {
    		// 아스키코드 65~90 -> A~Z
    		int pos = word.charAt(i)-65;
    		// 알파벳이면 스택에 값 푸쉬, 중복 구별을 위한 알파벳에 따른 값 배열에 저장
    		if(pos>=0 && pos<=25) {
    			if(count[pos]==0) {
    				double num = Double.parseDouble(br.readLine());
    				count[pos]=num;
    				num_stack.push(num);
    			}
    			else {
    				num_stack.push(count[pos]);
    			}
    		}
    		// 연산자 나올시 값 2개 pop -> 두번째pop 연산자 첫번째pop 계산
    		else {
    			double x = num_stack.pop();
				double y = num_stack.pop();
    			switch (word.charAt(i)) {
	    			case '+':
	    				num_stack.push(y+x);
	    				break;
	    			case '-':
	    				num_stack.push(y-x);
	    				break;
	    			case '*':
	    				num_stack.push(y*x);
	    				break;
	    			case '/':
	    				num_stack.push(y/x);
	    				break;
    			}
    		}
    	}
    	double result = num_stack.pop();
    	//소수점 2째자리 표헌  printf, String.format, Math.round 
    	//String.format("%.2f",result);
    	//Math.round(result * 100) /100.0; 표현가능
    	System.out.printf("%.2f",result);
    }
}

'백준' 카테고리의 다른 글

BOJ[JAVA] 2108 통계학  (0) 2023.04.02
BOJ[JAVA] 15828 Router  (0) 2023.04.02
BOJ[JAVA]_11725 트리의 부모 찾기  (0) 2023.03.26
BOJ[JAVA] 14469 소가 길을 건너간 이유3  (0) 2023.03.26
BOJ[JAVA]_ 12852 1로 만들기2  (0) 2023.03.19