문제 설명
문자열 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 배열
로 나타냈다. 그리고 각 요소마다 int
와 char
타입으로 변환해준 뒤 나누기를 제외한 사칙연산을 하는 코드를 작성했다. 다른 사람들 코드를 보면 switch
문으로도 문제를 해결할 수도 있었고, 바로 if else문
으로 들어가 return해주는 사람도 있었다. 그리고 연산 기호를 나타내는 op
값을 굳이 char
값으로 변경해주지 않고 String
값으로 바로 사용할 수도 있었다.