수학공식이 제대로 입력이 되었는지 판단하는 코드를 작성하려 합니다.
괄호는 소괄호와 중괄호가 있습니다.
입출력 예시
/**
* 소괄호와 중괄호가 있는 수학공식이 제대로 괄호의 짝이 맞는지 반환하는 함수
* @param {String} e 수학공식
* @returns {String} 옳으면 'True', 틀리면 'False' return
*/
function math(e) {
let stack = [];
const BUCKET_PAIR = {
'(': ')',
'{': '}',
};
for (el of e) {
// BUCKET_PAIR의 key라면, 즉 여는괄호라면 스택에 push
if (el in BUCKET_PAIR) stack.push(el);
// BUCKET_PAIR의 value라면, 즉 닫는괄호라면
if (Object.values(BUCKET_PAIR).includes(el)) {
// 스택의 가장 위에 있는 여는괄호와 짝이 맞는 닫는괄호라면 pop
if (BUCKET_PAIR[stack.at(-1)] === el) stack.pop();
// 아니라면 괄호의 순서가 잘못되어서 'False' return
else return 'False';
}
}
// 모든 괄호의 순서와 짝이 제대로 맞다면,
// 위에서 다 pop이 되어서 스택은 비어있을것이다.
return stack.length === 0 ? 'True' : 'False';
}
const ex = '5 + 7 * {(3 * 5)}'; // True
// const ex = '5 + 7){ * (3 * 5)'; // False
const result = math(ex);
console.log(result);
'PS > 제코베 JS 100제' 카테고리의 다른 글
제코베 JS 100제 / 85 / 숫자놀이 (0) | 2022.09.29 |
---|---|
제코베 JS 100제 / 84 / 숫자뽑기 (0) | 2022.09.29 |
제코베 JS 100제 / 82 / 수학 괄호 파싱 (0) | 2022.09.25 |
제코베 JS 100제 / 81 / 지뢰찾기 (0) | 2022.09.25 |