[D4] [S/W 문제해결 기본] 6일차 - 계산기3 - 1224
성능 요약
메모리: 21,180 KB, 시간: 138 ms, 코드길이: 1,604 Bytes
제출 일자
2023-11-15 10:56
출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do
import java.util.Scanner;
import java.util.Stack;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
for(int tc = 1; tc <= 10; tc++) {
sc.nextInt();
Stack<Integer> nums = new Stack<>();
Stack<Character> oper = new Stack<>();
String line = sc.next();
for(char ch : line.toCharArray()){
if(ch == '+'){
if(!oper.isEmpty() && oper.peek() == '+'){
nums.push(nums.pop() + nums.pop());
}else{
oper.push(ch);
}
}else if(ch == '*' || ch =='('){
oper.push(ch);
}else if(ch == ')'){
while(oper.peek() != '('){
oper.pop();
nums.push(nums.pop() + nums.pop());
}
oper.pop();
if(!oper.isEmpty() && oper.peek() == '*'){
nums.push(nums.pop() * nums.pop());
oper.pop();
}
}else{
if(!oper.isEmpty() && oper.peek() == '*'){
nums.push(nums.pop() * (ch - '0'));
oper.pop();
}else{
nums.push(ch - '0');
}
}
}
int result = oper.isEmpty() ? nums.pop() : nums.pop() + nums.pop();
System.out.println("#" + tc + " "+ result);
}
}
}
'알고리즘 - SWEA > D4' 카테고리의 다른 글
[SW expert Academy] SWEA 1226번 미로1 자바(Java) (1) | 2023.11.18 |
---|---|
[SW expert Academy] SWEA 3752번 가능한 시험 점수 자바(Java) (0) | 2023.11.16 |
[SW expert Academy] SWEA 1232번 사칙연산 자바(Java) (0) | 2023.11.16 |
[SW expert Academy] SWEA 1223번 계산기2 자바(Java) (0) | 2023.11.15 |
[SW expert Academy] SWEA 1222번 계산기1 자바(Java) (0) | 2023.11.15 |