[백준 1966번] 프린터 큐(Node.js,JavaScript)

박동현·2022년 5월 21일
0

백준문제풀이

목록 보기
5/11
post-thumbnail

출처

https://www.acmicpc.net/problem/1966

문제 풀이

const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
const [n, ...testcases] = input;
var numbers = [];

for (let i = 0; i < n; i++) {
  var count = 1;
  let location = Number(testcases[i * 2].split(' ')[1])
  let queue = testcases[i * 2 + 1].split(' ').map(Number);
  while (true) {
    const Item = queue.shift();
    if (Math.max(...queue) <= Item && location === 0) {
      console.log(count);
      break;
    } else if (Math.max(...queue) > Item && location === 0) {
      queue.push(Item);
      location = queue.length - 1;
    } else if (Math.max(...queue) > Item) {
      queue.push(Item);
      location -= 1;
    } else if (Math.max(...queue) <= Item) {
      count += 1;
      location -= 1;
    }
  }
}

문제를 읽고 조건문을 작성하는데 많은 어려움을 겪어서 구글링을 통해 이해한 후 다시 풀어보았다.

출력되는 순서를 알고싶은 위치를 저장하기 위해 location 변수에 알고자하는 숫자의 위치를 기록해둔다.
맨 앞의 숫자를 판별하기 위해 shift를 사용하여 Item에 저장해주었다.

그 후 if-else 구문을 통해
현재 Item이 우선순위가 가장 높은 숫자이고 location(출력되는 순서를 알고싶은 숫자의 위치) 가 0(맨앞) 이라면 count를 출력해주고 반복문을 끝낸다.

현재 Item이 우선순위가 가장 큰 수가 아니고 location 이 0이라면 맨 뒤로 보내주고(push) location 또한 맨 마지막으로 재설정 해준다.

현재 Item이 우선순위가 가장 큰 수가 아니면 맨 뒤로 보내준다. location -1

현재 Item이 우선순위가 가장 큰 수이면 출력을 하기 때문에 count를 늘려주고 location 또한 -1 을 해준다.

profile
좋은 개발자가 되고싶은 전공자

0개의 댓글