-
[백준 / javascript] 1021번 회전하는 큐알고리즘 2023. 4. 10. 15:25728x90
https://www.acmicpc.net/problem/1021
큐의 절반 길이와 추출해야 하는 원소의 인덱스를 비교해서 2, 3번 방법 중 하나를 택하면 된다.
// 1021 : 회전하는 큐 const readFile = process.platform === 'linux' ? '/dev/stdin' : 't.txt'; const input = require('fs') .readFileSync(readFile) .toString() .trim() .split('\\n'); const arr = input[0]; const [n, m] = arr.split(' '); const nums = input[1].split(' '); let queue = []; // 1 ~ n 까지 배열 생성 for (let i = 0; i < Number(n); i++) { queue.push(i + 1); } // 1번 : 맨 앞 원소 추출 const method1 = () => { queue.shift(); }; // 2번 : 맨 앞 원소 맨 뒤로 보내기 const method2 = () => { let num = queue.shift(); queue.push(num); }; // 3번 : 맨 뒤 원소 맨 앞으로 보내기 const method3 = () => { let num = queue.pop(); queue.unshift(num); }; let cnt = 0; for (num of nums) { let target = Number(num); if (target === queue[0]) { method1(); } else { let idx = queue.indexOf(target); let stable = queue.length / 2; if (idx <= stable) { for (let i = 0; i < idx; i++) { method2(); cnt++; } } else { for (let i = 0; i < queue.length - idx; i++) { method3(); cnt++; } } method1(); } } console.log(cnt);
728x90'알고리즘' 카테고리의 다른 글
[백준 / javascript] 1991번 트리 순회 (0) 2023.04.10 [백준 / javascript] 1874번 스택 수열 (0) 2023.04.10 [백준 / javascript] 1065번 한수 (0) 2023.04.10 [백준 / javascript] 4949번 균형잡힌 세상 (0) 2023.04.04 [백준 / javascript] 25325번 학생 인기도 측정 (0) 2023.03.31