올바른 괄호
let stack = [];
let answer = "YES";
for (c of s) {
if (c === "(") stack.push(c);
else {
if (stack.length === 0) {
return "NO";
}
stack.pop();
}
}
return stack.length > 0 || answer === "NO" ? "NO" : "YES";
괄호 문자 제거
let stack = [];
for (let i = 0; i < s.length; i++) {
const c = s[i];
if (c === ")") {
while(stack.pop() !== '(')
} else {
stack.push(c);
}
}
return stack.join("");
크레인 인형뽑기
let answer = 0;
let stack = [];
moves.forEach((m) => {
m = m - 1;
for (let row = 0; row < 5; row++) {
const kind = board[row][m];
if (kind !== 0) {
const pop = stack.pop();
if (kind === pop) {
answer += 2;
} else {
stack.push(pop);
stack.push(kind);
}
board[row][m] = 0;
break;
}
}
});
return answer;
후위식 연산
function compute(s, f, operator) {
switch (operator) {
case "+":
return +f + +s;
case "*":
return +f * +s;
case "-":
return +f - +s;
}
}
(...)
let stack = [];
for (let c of s) {
if (isNaN(+c)) stack.push(compute(stack.pop(), stack.pop(), c));
else stack.push(c);
}
return stack.pop();
쇠막대기
let answer = 0;
let stack = [];
s.split("").forEach((c, index) => {
if (c === "(") {
stack.push(c);
} else {
stack.pop();
if (s[index - 1] === "(") {
answer += stack.length;
} else {
answer += 1;
}
}
});
return answer;