개발일기

[JavaScript] 문자열 계산하기 본문

Algorithm

[JavaScript] 문자열 계산하기

황대성 2024. 7. 16. 00:07
문제 설명

 

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_string result
"3 + 4" 7

 

풀이
function solution(my_string) {
    const splitedMy_string = my_string.split(" ");
    let answer  = Number(splitedMy_string[0])
    
    for(let i = 1 ; i < splitedMy_string.length; i+=2){
        if(splitedMy_string[i] === "+"){
            answer += Number(splitedMy_string[i+1])
        }else{
            answer -= Number(splitedMy_string[i+1])
        }
    }
    return answer;
}

 

풀이 설명

 

1. 먼저 연산자와 숫자를 나눠야 계산을 하기 편하기 때문에 공백으로 구분되어 있는 문자열을 split()으로 나눈 뒤 배열로 만들어 준다.

2. 배열의 0번째 인덱스는 무조건 숫자가 오기 때문에 answer 값에 먼저 할당해준다.

3. for 문으로 반복하는데 i의 시작은 1이고, 2씩 증가하도록 한다.(연산자가 존재하는 index에만 반복하도록 한다.)

4. 만약 splitedMy_string[i]의 요소가 연산자 "+" 라면 splitedMy_string[i + 1] 을 answer에 더하고, 연산자 "+"가 아니라면 splitedMy_string[i + 1]을 answer에서 빼준다.

5. 연산한 값 answer을 리턴한다.

'Algorithm' 카테고리의 다른 글

[JavaScript] 구슬을 나누는 경우의 수  (0) 2024.07.18
[JavaScript] 영어가 싫어요  (0) 2024.07.18
[JavaScript] 컨트롤 제트  (5) 2024.07.15
[Javascript] 소인수분해  (1) 2024.07.15
[JavaSciprt] 잘라서 배열로 저장하기  (0) 2024.07.15