left, right 배열을 만들고 배열을 스택처럼 사용
커서의 왼쪽은 left 배열, 오른쪽은 right 배열로 push()함
상황에 맞게 조건문 정의
반복문 완료 후 right 배열에 있는 원소들을 pop()으로 left 배열에 push()함
left.join()을 사용해서 배열의 원소들을 문자열로 변환
주의사항
for (let i = 2; i < inputLength; i++) {
if (input[i][0] === "L") {
if (left.length !== 0) {
right.unshift(left.pop());
}
} else if (input[i][0] === "D") {
if (right.length !== 0) {
left.push(right.shift());
}
} else if (input[i][0] === "B") {
if (left.length !== 0) {
left.pop();
}
} else if (input[i][0] === "P") {
left.push(input[i][2]);
}
}
pop(), push() 대신 shift(), unshift()를 사용시 시간초과 발생
풀이 코드
let input = [];
var require = require("readline")
.createInterface(process.stdin, process.stdout)
.on("line", function(line) {
input.push(line.trim());
})
.on("close", function() {
const inputLength = input.length;
const wordLength = input[0].length;
let left = [];
let right = [];
for (let i = 0; i < wordLength; i++) {
left.push(input[0][i]);
}
for (let i = 2; i < inputLength; i++) {
if (input[i][0] === "L") {
if (left.length) {
right.push(left.pop());
}
}
else if (input[i][0] === "D") {
if (right.length) {
left.push(right.pop());
}
}
else if (input[i][0] === "B") {
if (left.length) {
left.pop();
}
}
else if (input[i][0] === "P") {
left.push(input[i][2]);
}
}
while (right.length) {
left.push(right.pop());
}
console.log(left.join(""));
});