문자열 계산하기

nacSeo (낙서)·2024년 4월 29일
0

프로그래머스

목록 보기
155/169

문제 설명

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에는 연산자가 적어도 하나 포함되어 있습니다.적어도를 보고 연산이 더 많을 수도 있겠다고 생각이 들어 최종 코드를 짜면서 통과시켰다. 문제 설명에 보완이 더 필요할 것 같다...!!!!😥

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

0개의 댓글