문제
덧셈, 뺄셈, 곱셈, 나눗셈을 할 수 있는 계산기 프로그램을 만드시오.
입력
입력의 각 줄에는 숫자와 +, -, *, /, =중 하나가 교대로 주어진다. 첫 번째 줄은 수이다. 연산자의 우선 순위는 생각하지 않으며, 입력 순서대로 계산을 하고, =가 주어지면, 그때까지의 결과를 출력한다. 주어지는 수는 108 이하의 양의 정수이다. 계산 중 결과는 0 또는 음수가 될 수 있지만, -108 ~ 108 범위를 넘지는 않는다. 또, 나눗셈에서 소수점은 버린다. 따라서, 100/3*3 = 99이다.
피제수가 음수일 때 나눗셈을 하는 경우는 입력으로 주어지지 않는다.
출력
첫째 줄에 계산 결과를 출력한다.
풀이
- 입력 라인마다 형태라 달라지기 때문에 첫 번째 수를 입력 받은 후 lineCnt 를 1로 지정한다.
- lineCnt가 홀수인 경우 int를 입력 받고, 짝수인 경우 문자열을 입력 받는다.
- 또한, 숫자를 입력 받은 다음 이전에 입력 받은 문자열에 따라 연산을 수행한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());
int lineCnt = 1;
int result = n;
String s = "";
// s 가 = 이 아닌 경우 반복
while (!s.equals("=")) {
lineCnt++;
if (lineCnt % 2 != 0) {
n = Integer.parseInt(br.readLine());
switch(s) {
case "+":
result += n;
break;
case "-":
result -= n;
break;
case "*":
result *= n;
break;
case "/":
result /= n;
break;
default:
break;
}
} else {
s = br.readLine();
}
}
System.out.println(result);
}
}
'백준' 카테고리의 다른 글
[백준 2167번][Java][2차원배열][DP] 2차원 배열의 합 (0) | 2023.04.03 |
---|---|
[백준 11725번][Java][Tree][DFS] 트리의 부모 찾기 (0) | 2023.03.27 |
[백준 2830번][Java][비트연산자] 행성 X3 (0) | 2023.03.21 |
[백준 10807번][Java][HashMap] 개수 세기 (0) | 2023.03.20 |
[백준 9012번][Java][Stack] 괄호 (0) | 2023.03.20 |