[백준 5430번] AC(Node.js,JavaScript)

박동현·2022년 5월 28일
0

백준문제풀이

목록 보기
9/11
post-thumbnail
post-custom-banner

출처

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에따라 문자열을 맨 앞에서 제거할지 맨 뒤에서 제거할지 결정하는 방식으로 바꾸어 시간초과를 해결할 수 있었다.

profile
좋은 개발자가 되고싶은 전공자
post-custom-banner

0개의 댓글