(5613) 계산기 프로그램

문제

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

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