https://www.acmicpc.net/problem/5430
const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
const N = Number(input.shift());
let answer = "";
for (let i = 0; i < N; i++) {
let testcase = input.splice(0, 3);
let isReverse = false;
testcase[2] = testcase[2].slice(1, -1).split(",");
for (let p of testcase[0]) {
var flag = true;
if (p == "R") isReverse = !isReverse;
else if (p == "D") {
if (testcase[1] == "0") {
answer += "error\n";
flag = !flag;
break;
}
if (testcase[2].length == 0) {
answer += "error\n";
flag = !flag;
break;
}
if (isReverse) testcase[2].pop();
else testcase[2].shift();
}
}
if (isReverse) testcase[2].reverse();
if (flag) answer += "[" + testcase[2].join(",") + "]\n";
}
console.log(answer.trim());
R 문자열을 만났을때마다 전체 문자열을 뒤집어 주는 식으로 시도했더니 시간초과가 발생하였다.
그래서 isReverse 변수를 true 로 선언하여 R 문자열을 만나면 false로 바꿔주고,
isReverse에따라 문자열을 맨 앞에서 제거할지 맨 뒤에서 제거할지 결정하는 방식으로 바꾸어 시간초과를 해결할 수 있었다.