[프로그래머스 Lv0.] 문자열 계산하기(JAVA)

gayoung·2023년 2월 10일
0

알고리즘

목록 보기
25/50

1. 문제

문제 설명

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의 숫자와 연산자는 공백 하나로 구분되어 있습니다.

입출력 예

my_stringresult
"3 + 4"7

2. 풀이 과정

내가 생각한 진행 과정

  • my_string의 숫자와 연산자는 공백 하나로 구분되어 있기 때문에 my_string을 공백 기준으로 쪼개준다.
  • 첫 숫자를 answer에 더해주고 연산 시작
  • +이면 flag = true, -이면 flag = false, 숫자이면 그 값을 더하거나 빼준다.
    • 다른방법: +이면 array의 다음 값을 더해주고, -이면 array의 다음 값을 빼준다.

최종 코드

public int solution(String my_string) {
        int answer = 0;

        String[] array = my_string.split(" ");
        answer += Integer.parseInt(array[0]);

        boolean flag = true;
        for (int i=1; i<array.length; i++) {
            if (array[i].equals("+")) {
                flag = true;
            } else if (array[i].equals("-")) {
                flag = false;
            } else {
                if(flag) {
                    answer += Integer.parseInt(array[i]);
                } else {
                    answer -= Integer.parseInt(array[i]);
                }
            }
        }
        return answer;
    }

다른 방법

public int solution(String my_string) {
    int answer = 0;

    String[] array = my_string.split(" ");
    answer += Integer.parseInt(array[0]);

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

0개의 댓글

관련 채용 정보