문제 설명
my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.
제한사항
연산자는 +, -만 존재합니다. 문자열의 시작과 끝에는 공백이 없습니다. 0으로 시작하는 숫자는 주어지지 않습니다. 잘못된 수식은 주어지지 않습니다. 5 ≤ my_string의 길이 ≤ 100 my_string을 계산한 결과값은 1 이상 100,000 이하입니다. my_string의 중간 계산 값은 -100,000 이상 100,000 이하입니다. 계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다. my_string에는 연산자가 적어도 하나 포함되어 있습니다. return type 은 정수형입니다. my_string의 숫자와 연산자는 공백 하나로 구분되어 있습니다.
나의 코드
class Solution {
public int solution(String my_string) {
int answer = 0;
String[] str = my_string.split(" ");
int num1 = Integer.parseInt(str[0]);
int num2 = Integer.parseInt(str[2]);
if(str[1].equals("+")) {
answer = num1 + num2;
} else if(str[1].equals("-")) {
answer = num1 - num2;
}
return answer;
}
}
문제를 풀었지만, 테스트 몇 개가 실패로 나왔다. 뭐가 잘못된 건지 이해가 안가서 계속 고민하다가 혹시...? 여러 번 연산하는 문자열인가? 하는 생각이 들어 코드를 변경해보았다.
class Solution {
public int solution(String my_string) {
String[] str = my_string.split(" ");
int answer = Integer.parseInt(str[0]);
for(int i=1; i<str.length-1; i+=2) {
if(str[i].equals("+")) {
answer += Integer.parseInt(str[i+1]);
} else if(str[i].equals("-")) {
answer -= Integer.parseInt(str[i+1]);
}
}
return answer;
}
}
역시나 여러 개의 연산이 존재하는 문자열이었다. 문제 설명이 부족해서 한참 헤맸다 🤨
느낀 점
여러 개의 연산이 들어 있는 문자열이라고 설명이 없어서 첫 번째 코드를 실패했을 때 왜 실패하는 건지 이해할 수 없고 혼란스러웠다... 다행히 제한사항에서 my_string에는 연산자가 적어도 하나 포함되어 있습니다.
의 적어도
를 보고 연산이 더 많을 수도 있겠다고 생각이 들어 최종 코드를 짜면서 통과시켰다. 문제 설명에 보완이 더 필요할 것 같다...!!!!😥