PATTERN RECOGNITION

양방향 공문제

2025-03-19

📌 Source Code: link-list/양방향-공문제.js

const solution = (balls, orders) => {
  let head = 0;
  let tail = balls.length - 1;
  let result = [];
  let wait = new Set();
  const next = 1;
  const prev = -1;

  for (let i = 0; i < orders.length; i++) {
    if (orders[i] === balls[head]) {
      console.log(`head : ${balls[head]}`);
      result.push(orders[i]);
      head++;
      while (wait.has(orders[i] + next)) {
        result.push(orders[i] + next);
        wait.delete(orders[i] + next);
        head++;
      }
    } else if (orders[i] === balls[tail]) {
      result.push(orders[i]);
      if (wait.has(orders[i] + prev)) {
        while (wait.has(orders[i] + prev)) {
          result.push(orders[i] + prev);
          wait.delete(orders[i] + prev);
          tail--;
        }
      }
      tail--;
    } else {
      wait.add(orders[i]);
    }
  }
  return result;
};

console.log(
  "result : ",
  solution([1, 2, 3, 4, 5, 6, 7], [7, 5, 6, 4, 2, 1, 3]),
);