[๋ฐฑ์ค] 9012๋ฒ: ๊ดํธ (Node.js)
์ ๊ทผ๋ฐฉ์
์๋ฃํ ๊ตฌ์กฐ์ธ(stack)์ ์ฌ์ฉํ์ฌ, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ์ ์ด์ ์ ๋ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์คํ์ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๊ฐ ์ฐจ๋ก๋ก ์์ด๋ฉด์ ์์๊ฐ ์ ์ง๋๋ฉฐ, ํ์ ์ ์ถ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
์๋ ์ด๋ฏธ์ง๋ฅผ ์ฐธ์กฐํ๋ฉด ์ฝ๊ฒ ์ดํดํ์ค ์ ์์ต๋๋ค.
๋น ์คํ์ 1, 2, 3์ ์ฐจ๋ก๋๋ก ๋ฃ์ ๋๋ 1์ด ๋งจ๋ฐ ๊ทธ๋ค์ 2, 3 ์์ผ๋ก ๋ค์ด๊ฐ๋๋ค.
ํ์ง๋ง ๋์ฌ ๋๋ ๋จผ์ ๋ค์ด๊ฐ 1์ด ์๋ ๋งจ ๋์ค์ ๋ค์ด๊ฐ 3, 2, 1์์ผ๋ก ๋์ค๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
ํ์ด โฐ
์ด์ ๊ฐ์ด stack ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด๋ณด๋ฉด,
"(" ๋ฅผ ๋ง๋๋ฉด stack์ ๋ฃ๊ณ (push) , ")" ๋ฅผ ๋ง๋๋ฉด stack์์ "("๋ฅผ ๋นผ๋ฉด ๋ฉ๋๋ค(pop).
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on("line", function (line) {
input.push(line);
}).on("close", function () {
for (let i = 1; i < input.length; i++) {
let stack = [];
let item = input[i].split("");
let result = true;
for (let j = 0; j < item.length; j++) {
// "(" ๋ฅผ ๋ง๋๋ฉด stack์์ push
if (item[j] === "(") {
stack.push(item[j]);
// ")" ๋ฅผ ๋ง๋๋ฉด stack์์ pop
// stack์ด ๋น๋ฐฐ์ด์ธ ์ํ์์ ")"๋ฅผ ๋ง๋๋ฉด for๋ฌธ์ ๋น ์ ธ๋๊ฐ๊ธฐ
} else {
if (!stack.pop()) {
result = false;
break;
}
}
}
// stack์ด ๋น๋ฐฐ์ด์ด ์๋๋ผ๋ฉด ex) ["("] ํ๋๋ผ๋ ๋จ์๊ฒ
if (stack.length !== 0) {
result = false;
}
if (result) {
console.log("YES");
} else {
console.log("NO");
}
}
});
๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ "()" ํ ์์ด ์ด๋ฃจ์ด์ง๋ฉด ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ํธ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด "((()))"๊ฐ ์์ ๋, "()"๋ฅผ ๋น๊ฐ์ผ๋ก ๋ง๋ค๋ฉด "(())"๊ฐ ๋์ต๋๋ค.
do...while๋ฌธ์ ํตํด ํด๋น ์์ ์ ๋ฐ๋ณตํ์์ต๋๋ค.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on("line", function (line) {
input.push(line);
}).on("close", function () {
for (let i = 1; i < input.length; i++) {
let item = input[i];
let find = "()";
// ์ ๊ท์์ ์ด์ฉํ์ฌ "()"๋ฅผ ๋น ๊ฐ์ผ๋ก ๋ง๋ญ๋๋ค.
// ex) ((())) => (())
do {
item = item.replace(/\(\)/g, "");
}
// ๋ง์ฝ ์์ง๋ "()"๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด do while๋ฌธ ์คํ
while (item.includes(find));
if (item == "") {
console.log("YES");
} else {
console.log("NO");
}
}
});
๋ฐฑ์ค 9012๋ฒ ๋งํฌ