문제
문제
덧셈, 뺄셈, 곱셈, 나눗셈을 할 수 있는 계산기 프로그램을 만드시오.
입력
입력의 각 줄에는 숫자와 +, -, *, /, =중 하나가 교대로 주어진다. 첫 번째 줄은 수이다. 연산자의 우선 순위는 생각하지 않으며, 입력 순서대로 계산을 하고, =가 주어지면, 그때까지의 결과를 출력한다. 주어지는 수는 108 이하의 양의 정수이다. 계산 중 결과는 0 또는 음수가 될 수 있지만, -108 ~ 108 범위를 넘지는 않는다. 또, 나눗셈에서 소수점은 버린다. 따라서, 100/3*3 = 99이다.피제수가 음수일 때 나눗셈을 하는 경우는 입력으로 주어지지 않는다.
출력
첫째 줄에 계산 결과를 출력한다.
문제 풀이
입력되는 문자열들을 Queue 자료구조에 담아준다. 처음에 queue에서 출렫 되는 정수는 바로 결과값에 더 해주고 그 다음 문자부터는 어떤 문자냐에 따라 사칙연산을 하도록 하면 된다.
나의 답안
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Deque<String> deque = new LinkedList<>();
while (!"=".equals(deque.peekLast())) {
deque.offerLast(sc.nextLine());
}
solution(deque);
}
private static void solution(Deque<String> deque) {
int result = 0;
String operation = "";
boolean isOperation = false;
result = Integer.parseInt(deque.pollFirst());
while (!deque.isEmpty()) {
String s = deque.pollFirst();
if ("+".equals(s) || "-".equals(s) || "/".equals(s) || "*".equals(s)) {
isOperation = true;
operation = s;
} else if ("=".equals(s)) {
break;
} else {
switch (operation) {
case "+":
result += Integer.parseInt(s);
break;
case "-":
result -= Integer.parseInt(s);
break;
case "/":
result /= Integer.parseInt(s);
break;
case "*":
result *= Integer.parseInt(s);
break;
default:
isOperation = false;
}
}
}
System.out.println(result);
}
}
'BackJoon > Algorithm' 카테고리의 다른 글
(2167) 2차원 배열 (0) | 2023.04.03 |
---|---|
(1254) 팰린드롬 만들기 (0) | 2023.04.03 |
(11752) 트리의 부모 찾기 (0) | 2023.03.27 |
(10807) 개수 세기 (0) | 2023.03.21 |
(2830) 행성 X3 (0) | 2023.03.21 |