한 걸음씩
[프로그래머스][JS] 문자열 계산하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/120902
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정 1
function solution(my_string) {
return eval(my_string);
}
eval은 문자열로 둘러싸인 계산식을 자동변환해서 반환해 준다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/eval
eval() - JavaScript | MDN
**eval()**은 문자로 표현된 JavaScript 코드를 실행하는 함수입니다.
developer.mozilla.org
풀이 과정 2
function solution(my_string) {
const str = my_string.split(' ')
let stack = []
let operator = 1 // 연산자를 분리할 변수
for (let i = 0; i < str.length; i++){
if (str[i] === '+'){
operator = 1 // '+'라면 양수
}else if (str[i] === '-'){
operator = -1 // '-'라면 음수
}else{ // 숫자일 경우 operator과 곱하기
stack.push(str[i] * operator)
}
}
// 스택에 저장된 수를 더해서 반환
return stack.reduce((acc, cur) => acc + cur)
}
위의 방법과 다르게 eval을 사용하는 것보다 안전하고 스택과 연산자로 접근했기 때문에 더 좋은 방법이다.
리뷰
eval은 계산기를 만들 때, 사용해 봤던 함수이지만 권장하지 않는 방법이라고 해서 기억하고 있었다.
그래서 직접 구현하는 방식으로 다시 풀어봤는데 생각보다 어렵지 않아서 괜찮았다.
계산기 만들 때도 이 구현 방식을 적용해 봐야겠다
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 같은 숫자는 싫어 (0) | 2023.06.15 |
---|---|
[프로그래머스][JS] 직사각형 별찍기 (0) | 2023.06.14 |
[프로그래머스][JS] 배열 만들기 6 (0) | 2023.06.13 |
[프로그래머스][JS] 정사각형으로 만들기 (0) | 2023.06.13 |
[프로그래머스][JS] 문자열 여러 번 뒤집기 (0) | 2023.06.12 |