코딩익힘책 #31 수학 괄호 파싱
6989 단어 coding challengecoding challenge
문제
수학공식이 제대로 입력이 되었는지 판단하는 코드를 작성하려 합니다. 괄호는 소괄호밖에 없습니다.
입출력 예시
데이터 입력(1), 프로그램 종료(2) : 1
데이터를 입력하세요: 3 + 5
True
데이터 입력(1), 프로그램 종료(2) : 1
데이터를 입력하세요: 5 + 7) * (3 * 5)
False
나의 코드
function math(e) {
let data = e.split("");
let count = 0;
for (let i = 0; i < data.length; i++) {
if (data[i] === "(") {
count += 1;
} else if (data[i] === ")") {
count -= 1;
}
if (count) {
return true;
} else {
return false;
}
}
console.log(data);
}
let order = 1;
while (order) {
// let order = prompt('데이터 입력(1), 프로그램 종료(2)');
if (order === 1) {
const ex = "5 + 7) * (3 * 5)";
console.log(math(ex));
order = 0;
} else {
break;
}
}
풀이 해석
- 문자열을 배열로 만든다.
- 초기값이 0으로 초기화된 count변수를 선언한다.
- 배열의 값 중 "("를 만날 경우 +1 ")"를 만날 경우 -1을 한다.
- 0일 경우 여는 소괄호와 닫는 소괄호의 갯수가 동일하므로 true를 반환한다.
- 아닐 경우 false를 반환한다.
- 끝
느낀 점
처음에 "연산"이 가능한지 판단하는 문제를 짜라고해서 풀지말까.. 라는 생각을 했다. 이유인즉슨 요즘 프로젝트들을 진행하고있어 여유롭게 문제를풀지 못하는 상황이다.
그렇지만 다행히 그저 소괄호가 올바른지만 확인하는 프로그램을 작성하는 것이여서 후다닥 풀었다. 새벽 3시이지만 무리없이 풀었다. 파이팅
그래 가끔은 이런 문제도 나와야지ㅎ
Author And Source
이 문제에 관하여(코딩익힘책 #31 수학 괄호 파싱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimtothechang/코딩익힘책-31-수학-괄호-파싱저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)