JAVA/프로그래머스 코딩테스트 입문

[프로그래머스, LV.0] 문자열 계산하기

sundori 2024. 12. 11. 16:34

목차

    문제 설명

    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) {
            String[] split_my_string = my_string.split(" ");
    
            // 초기 값을 첫 번째 숫자로 설정
            int result = Integer.parseInt(split_my_string[0]);
    
            // for문을 사용하여 연산 처리
            for (int i = 1; i < split_my_string.length; i += 2) {
                String operator = split_my_string[i];
                int operand = Integer.parseInt(split_my_string[i + 1]);
    
                if (operator.equals("+")) {
                    result += operand;
                } else if (operator.equals("-")) {
                    result -= operand;
                }
            }
    
            return result;
        }
    }

    코드 설명

    String[] split_my_string = my_string.split(" ");
    • 작동 원리:
      • my_string.split(" ")는 문자열을 공백을 기준으로 분리하여 배열에 저장한다.
      • 예를 들어, 입력 "3 + 5 - 2"는 ["3", "+", "5", "-", "2"]로 분리된다.
    • 용도:
      • 분리된 배열에서 연산자와 피연산자를 개별적으로 접근하기 위해 사용한다.
    int result = Integer.parseInt(split_my_string[0]);

     

    • 작동 원리:
      • 첫 번째 요소(피연산자)를 정수로 변환하여 result 변수에 저장한다.
      • 예를 들어, split_my_string[0]이 "3"이라면 result는 3이 된다.
    • 용도:
      • 이후 연산 결과를 계속 누적하기 위한 시작 값으로 사용한다.
    for (int i = 1; i < split_my_string.length; i += 2) {
        String operator = split_my_string[i];
        int operand = Integer.parseInt(split_my_string[i + 1]);
    
        if (operator.equals("+")) {
            result += operand;
        } else if (operator.equals("-")) {
            result -= operand;
        }
    }

     

     

    • 작동 원리:
      • i는 1부터 시작하며, 2씩 증가하여 연산자와 피연산자를 번갈아 처리한다.
      • split_my_string[i]: 현재 연산자 (예: + 또는 -).
      • split_my_string[i + 1]: 현재 연산자의 다음 피연산자.
      • if-else 조건문으로 연산자에 따라 result를 갱신한다.
    • 예시:
      • split_my_string = ["3", "+", "5", "-", "2"]일 경우:
        1. i = 1: 연산자 +, 피연산자 5 -> result = 3 + 5 = 8
        2. i = 3: 연산자 -, 피연산자 2 -> result = 8 - 2 = 6