| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- JavaScript
- 메가바이트스쿨
- TypeScript
- 코딩테스트
- 모던 딥 다이브 자바스크립트
- 알고리즘
- 내일배움카드
- MegabyteSchool
- 프로그래머스
- 입문
- 공식문서
- 프론트엔드
- 국비지원교육
- 자바스크립트
- 패스트캠퍼스
- useRef
- next.js
- styled-components
- CSS
- Github
- 비전공자
- react
- 이벤트
- 개발자취업부트캠프
- useMemo
- 리액트
- 개발 공부
- 모던 자바스크립트 딥 다이브
- GIT
- 자료구조
Archives
- Today
- Total
개발 기록 남기기✍️
[프로그래머스] 문자열 계산하기 본문
🗒️ 문제 설명
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 |
❇️ 나의 풀이
- 먼저 숫자와 연산자는 공백을 기준으로 나뉘어져있기 때문에 split(" ")으로 나눠준 배열을 만든다.
- answer의 초기값은 좌항에 해당하는 arr[0]을 할당하고, for 함수를 실행한다.
- for 함수를 돌면서 연산자만 체크할 것이므로 한번 돌면 i+=2를 해준다.
- i=0 일 때 arr[i+1]은 arr[1], i=2 일 때 arr[i+1]은 3으로 언제나 연산자 배열 아이템만을 가지고 조건문을 실행한다.
- 아이템의 값이 +일 때, answer에 연산자의 우항에 위치한 arr[i+2] 값을 더해주고 - 일 때는 arr[i+2] 값을 빼준다.
- split()을 통해 추출한 배열의 아이템들은 다 문자열이므로, Number()를 통해 숫자형으로 바꿔준 뒤 계산을 수행한다.
function solution(my_string) {
var arr = my_string.split(" ");
var len = arr.length;
var answer = Number(arr[0]);
console.log(arr);
for(i=0;i<len;i+=2){
if(arr[i+1] === "+"){
answer += Number(arr[i+2])
} else if(arr[i+1]==="-") {
answer -= Number(arr[i+2])
}
console.log(answer)
}
return answer
}
✍️ 리뷰
✔️ 사실 eval(my_string)하면 한번에 해결될 문제이긴 한데.. 그럴려고 문제를 출제하진 않았을 듯
✔️ 악의적인 영향을 받았을 수 있는 문자열을 eval()로 실행한다면, 해당 웹페이지나 확장 프로그램의 권함으로 사용자의 기기에서 악의적인 코드를 수행하는 결과를 초래할 수 있으므로 eval 함수는 사용하지 않는 것이 좋다.
'코딩 테스트 연습' 카테고리의 다른 글
| [프로그래머스] 특이한 정렬 (0) | 2023.01.03 |
|---|---|
| [프로그래머스] 로그인 성공? (0) | 2023.01.03 |
| [프로그래머스] 2차원으로 만들기 (0) | 2023.01.02 |
| [프로그래머스] 잘라서 배열로 저장하기 (1) | 2023.01.02 |
| [프로그래머스] 문자열 밀기 (0) | 2023.01.02 |