목차
문제 설명
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"]일 경우:
- i = 1: 연산자 +, 피연산자 5 -> result = 3 + 5 = 8
- i = 3: 연산자 -, 피연산자 2 -> result = 8 - 2 = 6
- split_my_string = ["3", "+", "5", "-", "2"]일 경우:
'JAVA > 프로그래머스 코딩테스트 입문' 카테고리의 다른 글
[프로그래머스, LV.0] 삼각형의 완성조건 (2) (0) | 2024.12.12 |
---|---|
[프로그래머스, LV.0] 영어가 싫어요 (0) | 2024.12.11 |
[프로그래머스, LV.0] 공 던지기 (0) | 2024.12.11 |
[프로그래머스, LV.0] 잘라서 배열로 저장하기 (0) | 2024.12.11 |
[프로그래머스, LV.0] 이진수 더하기 (1) | 2024.12.11 |