백준

[백준 5613번][Java] 계산기 프로그램

dbssk 2023. 3. 27. 17:51

5613번: 계산기 프로그램 (acmicpc.net)

 

5613번: 계산기 프로그램

입력의 각 줄에는 숫자와 +, -, *, /, =중 하나가 교대로 주어진다. 첫 번째 줄은 수이다. 연산자의 우선 순위는 생각하지 않으며, 입력 순서대로 계산을 하고, =가 주어지면, 그때까지의 결과를 출

www.acmicpc.net

문제

덧셈, 뺄셈, 곱셈, 나눗셈을 할 수 있는 계산기 프로그램을 만드시오.

입력

입력의 각 줄에는 숫자와 +, -, *, /, =중 하나가 교대로 주어진다. 첫 번째 줄은 수이다. 연산자의 우선 순위는 생각하지 않으며, 입력 순서대로 계산을 하고, =가 주어지면, 그때까지의 결과를 출력한다. 주어지는 수는 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);
    }
}