๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€] 9012๋ฒˆ: ๊ด„ํ˜ธ (Node.js)

JaeBBang 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๋ฒˆ ๋งํฌ

๐Ÿ‘‰ https://www.acmicpc.net/problem/9012