계산기 프로그램 - 백준 5613번

Yuno·2024년 7월 1일

Java)코테 연습

목록 보기
8/18


import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int result = 0;
        boolean flag = true;

        while (true) {
            String s = br.readLine();

            if (s.equals("=")) {
                bw.write(Integer.toString(result));
                bw.newLine();
                bw.flush();
                break;
            }
            if (flag) {
                result = Integer.parseInt(s);
                flag = false;
            } else {
                if (s.equals("+")) {
                    result += Integer.parseInt(br.readLine());
                } else if (s.equals("-")) {
                    result -= Integer.parseInt(br.readLine());
                } else if (s.equals("*")) {
                    result *= Integer.parseInt(br.readLine());
                } else if (s.equals("/")) {
                    result /= Integer.parseInt(br.readLine());
                }
            }
        }
    }
}

문제풀이

접근방식

Scanner 가 쓰기가 편하지만, 한번에 모든 데이터를 입력받아 처리하기위해 BufferedReader / BufferedWriter 사용.
그리고 입출력 동작이 예외를 발생시킬 가능성이 있기 때문에 메서드에 throws IOException 추가.
100 / 3 = 33 이 되야하고, 10의 8승까지 숫자를 정의했기 때문에 int 자료형 사용

변수 초기화

계산 결과값을 저장할 변수 result와
첫번째 숫자 입력여부를 나타내는 boolean 형 flag 생성. 처음에는 숫자가 입력되기 때문에 true로 초기화.

무한루프 while 문

부호도 같이 입력받는 형태이기 때문에 String 타입으로 입력을 받고, while 문으로 무한루프를 돌며 반복적으로 입력을 받음

입력값 처리

만약 입력값중 = 부호가 들어오면 result 변수에 저장된 결과값을 String 형변환 하여 출력하고 반복문 탈출.

첫번째 숫자 입력 처리

flag 가 true 일때, 즉, 첫번째 입력인 경우에 문자열 s를 정수로 변환시켜 result에 저장하고 flag를 false로 변경

연산처리

덧셈, 뺄셈, 곱셈, 나눗셈을 입력받으면 각 조건에 맞는 계산을 하여 result 변수에 저장

profile
Hello World

0개의 댓글