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

[๋ฐฑ์ค€] 5430๋ฒˆ: AC (Node.js)

JaeBBang 2024. 9. 4. 15:49

 

์ ‘๊ทผ๋ฐฉ์‹

์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผ์„ ํ•˜๋‹ˆ๊นŒ ( R์ด๋ฉด reverse(), D๋ฉด shift() ๋˜๋Š” error์ถœ๋ ฅ... ) ๋ฐฐ์—ด์„ ์ž์ฃผ ๋’ค์ง‘๊ณ  ์ž๋ฅด๊ณ  ํ•˜๋‹ค๋ณด๋‹ˆ๊นŒ

์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ์ž๊พธ ๋œจ๋Š” ๋ฌธ์ œ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.๐Ÿ˜ฅ

 

๊ณ ๋ฏผ๋์— "R"์ด ๋‚˜์˜ฌ ๋•Œ๋งˆ๋‹ค ๋ฐฐ์—ด์„ reverse๋ฅผ ์ฃผ๋Š”๊ฒŒ ์•„๋‹Œ,

ํ”Œ๋ž˜๊ทธ ๊ฐ’์„ ์ค˜์„œ ์ตœ์ข…์ ์œผ๋กœ ํ•œ๋ฒˆ๋งŒ reverse๋ฅผ ํ•˜๊ฒŒ๋” ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, R์ด ๋‚˜์˜จ ๋‹ค์Œ์— D๊ฐ€ ๋‚˜์˜ฌ ๊ฒฝ์šฐ, 

[1, 2, 3, 4] => R => [4, 3, 2, 1] => D => [3, 2, 1]
์ฆ‰ ๋งˆ์ง€๋ง‰ ๋ฐฐ์—ด์€ [3, 2, 1]

pop()์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ
[1, 2, 3, 4] => R (ํ”Œ๋ž˜๊ทธ๊ฐ’์ฃผ๊ธฐ)=> [1, 2, 3, 4] => D => (ํ”Œ๋ž˜๊ทธ๊ฐ’์ด ์žˆ์œผ๋ฉด pop ์—†์œผ๋ฉด shift) [1, 2, 3]
๋งˆ์ง€๋ง‰์— ํ”Œ๋ž˜๊ทธ๊ฐ’์„ ํ™•์ธํ•˜์—ฌ true์ด๋ฉด reverse() => [3, 2, 1]

 

๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋ฉฐ ์—ฌ๋Ÿฌ๋ฒˆ์˜ reverse๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ ์‹œ๊ฐ„์ ํšจ์œจ์ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

 

 

 

ํ’€์ด โฐ

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 () {
  input.shift();

  for (let i = 0; i < input.length; i += 3) {
    // ex) RDD, RD, DD ...
    let tCaseRD = input[i].split("");
    // [1, 2, 3, 4], [1, 2, 3] ...
    let tCaseArr = JSON.parse(input[i + 2]);
    // ์—๋Ÿฌ ํ”Œ๋ž˜๊ทธ ๊ฐ’
    let isErr = false;
    // reverse ํ”Œ๋ž˜๊ทธ ๊ฐ’
    let isRev = false;
    for (let j = 0; j < tCaseRD.length; j++) {
      // [R, D, D] ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ R์ด ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” isRev์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ
      if (tCaseRD[j] === "R") {
        isRev = !isRev;
      } else {
        // [] ๋นˆ ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ์— isError์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ ํ›„ for๋ฌธ ๋น ์ ธ๋‚˜๊ฐ€๊ธฐ
        if (tCaseArr.length === 0) {
          isErr = !isErr;
          break;
        } else {
          // D์ผ ๊ฒฝ์šฐ์— isRev๊ฐ€ true์ด๋ฉด ๋’ค์—์„œ ํ•˜๋‚˜ ๋นผ๊ธฐ
          if (isRev) {
            tCaseArr.pop();
          } else {
            // isRev๊ฐ€ false์ด๋ฉด ์•ž์—์„œ ํ•˜๋‚˜ ๋นผ๊ธฐ
            tCaseArr.shift();
          }
        }
      }
    }
    if (isErr) {
      console.log("error");
    } else {
      // isRev๊ฐ€ true์ด๋ฉด ๋ฐฐ์—ด๋’ค์ง‘๊ธฐ
      if (isRev) {
        tCaseArr.reverse();
      }
      // JSON.stringify๋กœ ๋ฐฐ์—ด์˜ ์š”์†Œ ํฌ๋งทํŒ…
      console.log(JSON.stringify(tCaseArr));
    }
  }
});

 

๋ฐฑ์ค€ 5430๋ฒˆ ๋งํฌ

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