๐ ์๊ณ ๋ฆฌ์ฆ/๋ฐฑ์ค
[๋ฐฑ์ค] 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๋ฒ ๋งํฌ