[TIL] 250515 알고리즘(JS)

이세령·2025년 5월 15일
0

TIL

목록 보기
120/126

문제

https://school.programmers.co.kr/tryouts/85890/challenges?language=javascript

처음에 +랑 -만 사용한다고 하여 연산자를 기준으로 split으로 나눠서 실행해보니까 통과되어서 채점을 해봤다.

function solution(my_string) {
    var answer = 0;
    let newString = [];
    if (my_string.includes('+')){
        newString = my_string.split('+');
        answer = Number(newString[0]) + Number(newString[1]);
    } else {
        newString = my_string.split('-');
        answer = Number(newString[0]) - Number(newString[1]);
    }
   
    return answer;
}

테스트 케이스 10개중에 2개만 맞길래 왜 그런지 제한사항을 다시 살펴봤다.

제한사항

  • 연산자는 +, -만 존재합니다.
  • 문자열의 시작과 끝에는 공백이 없습니다.
  • 0으로 시작하는 숫자는 주어지지 않습니다.
  • 잘못된 수식은 주어지지 않습니다.
  • my_string에는 연산자가 적어도 하나 포함되어 있습니다.
  • return type 은 정수형입니다.
  • my_string의 숫자와 연산자는 공백 하나로 구분되어 있습니다.

연산자가 여러개 들어갈 수 있어서 틀렸던 것 같다.
그리고 연산자와 숫자는 공백으로 구분되어 있다고 하니 공백을 기준으로 나눠보기로 했다.

function solution(my_string) {
    var answer = 0;
    const newString = my_string.split(" ");
    answer = Number(newString[0]);
    
    for(let i = 1; i < newString.length; i += 2) {
        const op = newString[i];
        const num = Number(newString[i+1]);
        if (op === '+') {
            answer += num;
        } else {
            answer -= num;
        }
    }
   
    return answer;
}

패턴이 숫자 - 연산자 - 숫자 - 연산자 - 숫자...
이런식으로 될 수 밖에 없으니 첫 숫자는 결과값에 저장해주고 나머지는 연산자에 따라 계산해줬다.

제한사항을 잘 읽어보자

profile
https://github.com/Hediar?tab=repositories

0개의 댓글