ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers] JavaScript 알고리즘 | Lv.0 문자열 계산하기
    ► JS Algorithm/Programmers 2024. 8. 18. 14:18
    반응형

    🔒 문제 설명

    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

    🔒 입출력 예 설명

    입출력 예 #1

    • 3 + 4 = 7 return 합니다.

     

    🔐 solution of mine

    eval()

    function solution(my_string) {
      return console.log(eval(my_string));
    }
    
    solution("3 + 4"); // expected output: 7


    🔐 solution of mine

    String.prototype.split()

    Number

    function solution(my_string) {
      const arr = my_string.split(" ");
      let answer = Number(arr[0]);
    
      for (let i = 1; i < arr.length; i += 2) {
        answer += Number(arr[i] + arr[i + 1]);
      }
    
      return console.log(answer);
    }
    
    solution("3 + 4"); // expected output: 7

     

    🔐 GPT's solution

    String.prototype.split()

    parseInt()

    function solution(my_string) {
      // 문자열을 공백을 기준으로 분리
      const tokens = my_string.split(" ");
    
      // 첫 번째 숫자를 초기값으로 설정
      let result = parseInt(tokens[0]);
    
      // 나머지 토큰들을 순차적으로 처리
      for (let i = 1; i < tokens.length; i += 2) {
        const operator = tokens[i]; // 연산자 (+ 또는 -)
        const number = parseInt(tokens[i + 1]); // 다음 숫자
    
        if (operator === "+") {
          result += number; // 더하기 연산
        } else if (operator === "-") {
          result -= number; // 빼기 연산
        }
      }
    
      return console.log(result); // 최종 결과 반환
    }
    
    solution("3 + 4"); // expected output: 7

     

    🔐 solution of others

    Array.prototype.push()

    Array.prototype.reduce()

    function solution(my_string) {
      const stack = [];
      let sign = 1;
    
      for (const ch of my_string.split(" ")) {
        if (ch === "+") {
          sign = 1;
        } else if (ch === "-") {
          sign = -1;
        } else {
          stack.push(ch * sign);
        }
      }
      return console.log(stack.reduce((a, c) => a + c, 0));
    }
    
    solution("3 + 4"); // expected output: 7

    🔐 solution of others

    eval()

    let solution = eval;
    
    console.log(solution("3 + 4")); // expected output: 7

     

    🔐 solution of others

    String.prototype.split() 

    while

    Array.prototype.unshift()

    Array.prototype.shift()

    Number

    function solution(my_string) {
      const arr = my_string.split(" ");
    
      while (arr.length > 1) {
        arr.unshift(
          Number(arr.shift()) + (arr.shift() === "+" ? 1 : -1) * arr.shift()
        );
      }
      return console.log(arr[0]);
    }
    
    solution("3 + 4"); // expected output: 7
    solution("3 + 4 - 4"); // expected output: 3

     


    🔐 solution of others

    new Function()

    function solution(my_string) {
      return console.log(new Function("return " + my_string)());
    }
    
    solution("3 + 4"); // expected output: 7
    solution("3 + 4 - 4"); // expected output: 3

     


    🔐 solution of others

    String.prototype.split()

    Array.prototype.reduce()

    Number

    function solution(my_string) {
      let operator = "+";
      return console.log(
        my_string.split(" ").reduce((a, c) => {
          if (c === "+") {
            operator = "+";
            return a;
          } else if (c === "-") {
            operator = "-";
            return a;
          } else {
            if (operator === "+") {
              return a + Number(c);
            } else {
              return a - Number(c);
            }
          }
        }, 0)
      );
    }
    
    solution("3 + 4"); // expected output: 7
    solution("3 + 4 - 4"); // expected output: 3

     


     

    반응형
Designed by Tistory.