프로그래머스 : 문자열 계산하기

Digeut·2023년 3월 4일
0

프로그래머스

목록 보기
13/164

❔문제설명

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 사용하기

profile
개발자가 될 거야!

0개의 댓글