function solution(s) {
let stack = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === "(") stack.push("(");
else {
if (stack.length === 0) return "NO";
stack.pop();
}
}
if (stack.length !== 0) return "NO";
return "YES";
}
function solution(s) {
let stack = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === ")") {
while (stack.pop() !== "(");
} else {
stack.push(s[i]);
}
}
return stack.join("");
}
전위순회의 순서
부모 -> 왼쪽자식 -> 오른쪽자식
1 -> 2 -> 4 -> 5 -> 3 -> 6 -> 7
중위순회의 순서
왼쪽자식 -> 부모 -> 오른쪽자식
4 -> 2 -> 5 -> 1 -> 6 -> 3 -> 7
후위순회의 순서
왼쪽자식 -> 오른쪽자식 -> 부모
4 -> 5 -> 2 -> 6 -> 7 -> 3 -> 1
function solution(s) {
let answer;
let stack = [];
for (let x of s) {
if (!isNaN(x)) stack.push(Number(x));
else {
let rt = stack.pop();
let lt = stack.pop();
if (x === "+") stack.push(lt + rt);
else if (x === "-") stack.push(lt - rt);
else if (x === "*") stack.push(lt * rt);
else if (x === "/") stack.push(lt / rt);
}
}
answer = stack[0];
return answer;
}
function solution(s) {
let stack = [];
for (let i = 0; i < s.length; i++) {
if (stack.length > 0 && stack[stack.length - 1] === s[i]) {
stack.pop();
} else stack.push(s[i]);
}
return stack.join("");
}
function solution(n, k) {
let que = Array.from({ length: n }, (v, i) => i + 1);
let answer = 0;
while (que.length) {
for (let i = 1; i < k; i++) que.push(que.shift());
que.shift();
if (que.length === 1) answer = que.shift();
}
return answer;
}
function solution(need, plan) {
let answer = "YES";
let que = need.split("");
for (let p of plan) {
if (que.includes(p)) {
if (p !== que.shift()) return "NO";
}
}
if (que.length > 0) return "NO";
return answer;
}
function solution(nums, k) {
let answer = [];
let deque = [];
for (let i = 0; i < k - 1; i++) {
while (deque.length > 0 && deque[deque.length - 1][0] > nums[i]) {
deque.pop();
}
deque.push([nums[i], i]);
}
for (let i = k - 1; i < nums.length; i++) {
while (deque.length > 0 && deque[deque.length - 1][0] > nums[i]) {
deque.pop();
}
deque.push([nums[i], i]);
answer.push(deque[0][0]);
if (deque[0][1] === i - k + 1) deque.shift();
}
return answer;
}
function solution(num, k) {
num = num.toString().split("");
let stack = [];
for (let i = 1; i < num.length; i++) {
if (stack.length === 0) stack.push(num[i - 1]);
while (0 < k && stack[stack.length - 1] > num[i]) {
stack.pop();
k--;
}
stack.push(num[i]);
}
stack = stack.join("");
if (stack.length === 0) return 0;
return Number(stack);
}