본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

[프로그래머스 - JAVA] 문자열 계산하기

by 코딩하는 흰둥이 2023. 3. 14.
반응형

 

  • 입출력 예
my_string result
"3 + 4" 7

  • 입출력 예 설명

입출력 예 #1

3 + 4 = 7을 return 합니다.

 


  • 내 풀이
class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        String[] check= my_string.split(" ");

        if (check[1].equals("+")){
            answer = Integer.parseInt(check[0]) + Integer.parseInt(check[2]);
        }else if (check[1].equals("-")){
            answer = Integer.parseInt(check[0]) - Integer.parseInt(check[2]);
        }
        
        return answer;
    }
}

위의 풀이로 실행을 하니 성공하였으나 제출하고 채점하기를 하니 8개가 실패가 떴다

뭐가 문제인가 생각하다가 제한사항에 my_string에는 연산자가 적어도 하나 포함되어 있습니다. 라는 문구를 보는 순간 연산자가 더 있을 수 도 있겠구나 라는 생각이 들었다

그래 이러면 너무 쉽지...

 

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        // 숫자와 연산자는 공백 하나로 구분되어 있기 때문에 구분자로 이용함
        String[] check= my_string.split(" ");
        
        // 첫 수를 저장하여 다음 연산자를 체크한다.
        answer = Integer.parseInt(check[0]);

        for (int i = 1; i < check.length; i += 2) {
            if (check[i].equals("+")){
                answer += Integer.parseInt(check[i +1]);
            }else if (check[i].equals("-")){
                answer -= Integer.parseInt(check[i +1]);
            }
        }
        return answer;
    }
}

쉽게 통과~

 

 

  • 다른 사람 풀이
import java.util.Arrays;

class Solution {
    public int solution(String myString) {
        return Arrays.stream(myString.replaceAll("- ", "-").replaceAll("[+] ", "").trim().split(" ")).mapToInt(Integer::parseInt).sum();
    }
}



class Solution {
    public int solution(String my_string) {
        String[] calculationArray = my_string.split(" ");

        int answer = Integer.parseInt(calculationArray[0]);
        for(int i = 1; i < calculationArray.length; i++) {
            if(calculationArray[i].equals("+")) {
                answer += Integer.parseInt(calculationArray[i + 1]);
            }

            if(calculationArray[i].equals("-")) {
                answer -= Integer.parseInt(calculationArray[i + 1]);
            }
        }

        return answer;
    }
}

 

댓글