간단한 식 계산하기

nacSeo (낙서)·2024년 2월 25일
0

프로그래머스

목록 보기
102/169

문제 설명

문자열 binomial이 매개변수로 주어집니다. binomial은 "a op b" 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.

제한사항

0 ≤ a, b ≤ 40,000
0을 제외하고 a, b는 0으로 시작하지 않습니다.

나의 코드

class Solution {
    public int solution(String binomial) {
        int answer = 0;
        String[] arr = binomial.split(" ");
        int a = Integer.parseInt(arr[0]);
        char op = arr[1].charAt(0);
        int b = Integer.parseInt(arr[2]);
        if(op == '+') {
            answer = a+b;
        } else if(op == '-') {
            answer = a-b;
        } else {
            answer = a*b;
        }
        return answer;
    }
}

다른 사람 코드

public class Solution {
    public static int solution(String binomial) {
        String[] parts = binomial.split(" ");
        int a = Integer.parseInt(parts[0]);
        int b = Integer.parseInt(parts[2]);
        char op = parts[1].charAt(0);
        int result = 0;
        switch (op) {
            case '+':
                result = a + b;
                break;
            case '-':
                result = a - b;
                break;
            case '*':
                result = a * b;
                break;
            default:
                throw new IllegalArgumentException("Invalid operator: " + op);
        }
        return result;
    }
}

switch문 활용

class Solution {

    public int solution(String binomial) {
        String[] cal = binomial.split(" ");

        if (cal[1].equals("+")) {
            return (Integer.parseInt(cal[0])) + (Integer.parseInt(cal[2]));
        } else if (cal[1].equals("-")) {
            return (Integer.parseInt(cal[0])) - (Integer.parseInt(cal[2]));
        } else {
            return (Integer.parseInt(cal[0])) * (Integer.parseInt(cal[2]));
        }
    }
}

느낀 점

우선 띄어쓰기 기준으로 split()하여 String 배열로 나타냈다. 그리고 각 요소마다 intchar타입으로 변환해준 뒤 나누기를 제외한 사칙연산을 하는 코드를 작성했다. 다른 사람들 코드를 보면 switch문으로도 문제를 해결할 수도 있었고, 바로 if else문으로 들어가 return해주는 사람도 있었다. 그리고 연산 기호를 나타내는 op값을 굳이 char값으로 변경해주지 않고 String값으로 바로 사용할 수도 있었다.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글