문제
민성이는 정수3개의 사칙연산을 계산하는 계산기를 만들려고 한다.
계산기는 반드시 3개의 정수만을 계산한다. 사용되는 연산자는 “+, -, *, /, %”를 사용한다. 여기서 ‘/’는 몫을 구하고, ‘%’는 나머지를 구하는 연산자 이다.
입력형식
입력은 첫줄에 계산하고자 하는 연산식이 들어온다. 예, 3+4*5 입력되는 정수는 1000이하이다.
출력형식
출력은 첫줄에 입력으로 주어진 계산식을 계산하여 결과를 정수로 출력한다.
입력 예
3+4*5
출력 예
23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String str = sc.nextLine(); char[] strArray = str.toCharArray(); Queue[] queueArray = new Queue[3]; for(int i = 0;i<3;i++){ queueArray[i] = new LinkedList(); } int stackArrayIdx = 0; char[] operatorArray = new char[2]; int operatorArrayIdx = 0; boolean newOperandFlag = false; for(int i = 0; i < strArray.length;i++){ if(strArray[i]=='+'||strArray[i]=='-'||strArray[i]=='*'||strArray[i]=='/'||strArray[i]=='%'){ operatorArray[operatorArrayIdx] = strArray[i]; operatorArrayIdx++; stackArrayIdx++; }else{ queueArray[stackArrayIdx].add(strArray[i]); } } int[] operandArray = new int[3]; for(int i = 0;i < 3;i++){ String tempOperand = ""; for(;;){ if(queueArray[i].isEmpty()){ break; } char c = (char)queueArray[i].poll(); tempOperand += c; } operandArray[i] = Integer.parseInt(tempOperand); } int[] operatorPrecedence = new int[2]; for(int i=0; i<2; i++){ if(operatorArray[i] == '+'||operatorArray[i] == '-'){ operatorPrecedence[i] = 1; }else{ operatorPrecedence[i] = 2; } } int finalResult = 0; if(operatorPrecedence[0] < operatorPrecedence[1]){ int result1 = calculator(operandArray[1], operatorArray[1], operandArray[2]); finalResult = calculator(operandArray[0], operatorArray[0], result1); }else{ int result1 = calculator(operandArray[0], operatorArray[0], operandArray[1]); finalResult = calculator(result1, operatorArray[1], operandArray[2]); } System.out.println(finalResult); } static int calculator(int operator1, char operand, int operator2){ if(operand == '+'){ return operator1 + operator2; }else if(operand == '-'){ return operator1 - operator2; }else if(operand == '*'){ return operator1 * operator2; }else if(operand == '/'){ return operator1 / operator2; }else if(operand == '%'){ return operator1 % operator2; } return 0; } } |
No comments:
Post a Comment