더보기
제한사항
입출력 예my_stringresult
입출력 예 설명
문제 설명
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 |
입출력 예 설명
입출력 예 #1
- 3 + 4 = 7을 return 합니다.
사실 로직은 잘 세웠었는데 배열을 잘못 잘라서 조금 헤맨 문제다.
배열을 자른 후 부호를 체크해가며 그에 알맞게 더하거나 빼주는 형식으로 코드를 작성했는데,
my_string.split(' '); 으로 배열을 잘랐더니 1+2처럼 한자릿수들로 이루어진 계산은 문제가 없었지만 두자리 이상의 숫자가 나오면 배열이 12라는 숫자를 1과 2로 나누어 잘라 테스트 케이스에서 실패가 떴다. 따라서 my_string.split(' '); 배열을 공백을 기준으로 잘라주어 이 문제를 해결하였다.
function solution(my_string) {
my_string = my_string.split(' ');
let answer = parseInt(my_string[0]);
for(let i=1; i<my_string.length; i = i+2){
if(my_string[i] === '+'){
answer += parseInt(my_string[i+1]);
} else if(my_string[i] === '-'){
answer -= parseInt(my_string[i+1]);
}
}
return answer;
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스 JS] 숨어있는 숫자의 덧셈 (2) (0) | 2022.12.07 |
---|---|
[프로그래머스 JS] 이진수 더하기 (10진수 2진수 변환) (0) | 2022.12.07 |
[프로그래머스 JS] 소인수분해 (0) | 2022.11.22 |
[프로그래머스 JS] 구슬을 나누는 경우의 수 : BigInt() (0) | 2022.11.17 |
[프로그래머스 JS] 프로그래머스 최빈값 구하기 (1) | 2022.11.12 |