
https://school.programmers.co.kr/learn/courses/30/lessons/42587
function solution(priorities, location) {
const origin = priorities[location];
priorities[location] = 'a'
console.log(origin, priorities)
let answer = 0;
while(true){
const search = priorities.indexOf("a")
priorities[search] = origin;
const max = Math.max(...priorities)
priorities[search] = "a";
if(priorities[0] === "a"){
// 대기열의 맨 앞에 있는 문서가 내가 뽑으려고 하는 문서가 맞다면
if(origin === max){
// 뽑으려고 하는 문서의 중요도가 대기열에서 가장 클 때
return ++answer;
}
}
if(priorities[0] === max){
// 형재 가장 앞에 있는 문서가 가장 큰 중요도를 가지고 있다면
// == 현재 문서를 인쇄한다.
priorities.shift()
answer++;
}else{
// 현재 가장 앞에 있는 문서가 가장 큰 중요도가 아니라면
// == 앞에 있는 문서를 뒤로 보낸다.
priorities.push(priorities[0])
priorities.shift();
}
}
return answer
}
이번 알고리즘은 중요도에 따라서 배열의 위치를 조정하여 출력해야 한다는 조건이 있었다. 따라서 현재 출력하고자 하는 값이 배열에서의 중요도를 따져보아서 이를 판별하는 조건을 추가하고 해당 로직을 거쳐서 참인 경우에만 출력하고 아닌경우에는 맨 뒤로 보내도록 하였다. 로직 자체는 어렵지 않았지만 처음에 조건을 어떻게 걸어주어야 하는지 조금 고민했다!
'알고리즘 공부장' 카테고리의 다른 글
08. [Lv2] 스킬트리 (0) | 2022.12.09 |
---|---|
07. [Lv2] 괄호 회전하기 (0) | 2022.12.02 |
05. [Lv1] 수박수박수박수박수박수? (0) | 2022.11.11 |
04. [Lv1] 나머지가 1이 되는 수 찾기 (0) | 2022.11.09 |
03. [Lv1] 정수 내림차순으로 배치하기 (0) | 2022.11.09 |