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의 숫자와 연산자는 공백 하나로 구분되어 있습니다.
숫자와 연산자가 공백으로 구분되어 있다고 하니 공백을 기준으로 나누는 배열을 만든다음.. 연산을 해야하는데 배열로 [3,+,4]를 만들면 숫자가 들어간 배열은 짝수인덱스를 가지고, 연산자가 들어간 값은 홀수인덱스를 가진다
class Solution {
public int solution(String my_string) {
int answer = 0;
String[] calNum = my_string.split(" ");
answer += Integer.parseInt(calNum[0]);
//첫번째 인덱스값은 무조건 숫자니까 answer에 대입
for(int i = 1 ; i < calNum.length ; i++){
if(i%2 != 0){ //홀수인덱스는 연산자니까 연산자로
//그 다음 인덱스 더해줄지 뺄지 정하기
if(calNum[i]=="+"){
answer += Integer.parseInt(calNum[i+1]);
} else {
answer -= Integer.parseInt(calNum[i+1]);
}
}
}
return answer;
}
}
왜..?합이 -1이 나오는거지 +와 같은게 인식이 안되고 있다 빼버렸네
class Solution {
public int solution(String my_string) {
int answer = 0;
String[] calNum = my_string.split(" ");
answer += Integer.parseInt(calNum[0]);
for(int i = 1 ; i < calNum.length ; i++){
if(i%2 != 0){
if(calNum[i].equals("+")){
answer += Integer.parseInt(calNum[i+1]);
} else {
answer -= Integer.parseInt(calNum[i+1]);
}
}
}
return answer;
}
}
== 연산자는 비교하고자 하는 두개의 대상의 주소값을 비교하는데,
String클래스의 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교한다!! 값자체를 비교해서 +를 인식해야 하니까 equals 사용하기