BOJ[4949] - 균형잡힌 세상 by JavaScript
균형잡힌 세상
문제
언어
- JavaScript
문제 풀이 step 1
- 스택을 이용해서 풀 수 있습니다.
- 문자가 괄호인 경우를 제외하고는 다 무시합니다.
- 문자가 ‘(‘ 또는 ‘[’ 일때는 push 합니다.
- 문자가 ‘)’ 이면 스택의 맨 위가 ‘(‘ 인지 체크해주고, pop 합니다.
- 문자가 ‘]’ 이면 스택의 맨 위가 ‘]’ 인지 체크해주고, pop 합니다.
소스 코드
const input = require("fs").readFileSync("/dev/stdin").toString();
const solution = (input) => {
const arr = input.split(".");
let res = [];
for (let i = 0; i < arr.length - 2; i++) {
const str = arr[i];
const stack = [];
let check = true;
for (let j = 0; j < str.length; j++) {
if (str[j] === "(") {
stack.push(str[j]);
} else if (str[j] === ")") {
if (stack.length < 1 || stack[stack.length - 1] === "[") {
check = false;
break;
} else stack.pop();
} else if (str[j] === "[") {
stack.push(str[j]);
} else if (str[j] === "]") {
if (stack.length < 1 || stack[stack.length - 1] === "(") {
check = false;
break;
} else stack.pop();
}
}
if (check && stack.length === 0) res.push("yes");
else res.push("no");
}
return res.join("\n");
};
console.log(solution(input));