-
[๋ฐฑ์ค] 9012๋ฒ: ๊ดํธ (Node.js)๐ ์๊ณ ๋ฆฌ์ฆ/๋ฐฑ์ค 2024. 9. 2. 15:59
์ ๊ทผ๋ฐฉ์
์๋ฃํ ๊ตฌ์กฐ์ธ(stack)์ ์ฌ์ฉํ์ฌ, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ์ ์ด์ ์ ๋ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์คํ์ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๊ฐ ์ฐจ๋ก๋ก ์์ด๋ฉด์ ์์๊ฐ ์ ์ง๋๋ฉฐ, ํ์ ์ ์ถ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
์๋ ์ด๋ฏธ์ง๋ฅผ ์ฐธ์กฐํ๋ฉด ์ฝ๊ฒ ์ดํดํ์ค ์ ์์ต๋๋ค.
img์ถ์ฒ: https://www.programiz.com/dsa/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๋ฒ ๋งํฌ
'๐ ์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 24262๋ฒ: ์๊ณ ๋ฆฌ์ฆ ์์ - ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ 1 (Node.js) (0) 2024.09.09 [๋ฐฑ์ค] 11659๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 (Node.js) (0) 2024.09.05 [๋ฐฑ์ค] 5430๋ฒ: AC (Node.js) (0) 2024.09.04 [๋ฐฑ์ค] 2776๋ฒ: ์๊ธฐ์ (Node.js) (0) 2024.09.03 [๋ฐฑ์ค] 17478๋ฒ: ์ฌ๊ทํจ์๊ฐ ๋ญ๊ฐ์? (Node.js) (2) 2024.09.03