알고리즘 문제를 꾸준하게 푸는게 정말 너무 어렵다ㅜㅜ 알고리즘이 약하다보니 계속 피하게 되는데 오늘부터는 진짜 멱살잡고서라도 한 문제씩 꼭 풀어나가야지!!
오늘 푼 문제는 기능개발 문제로 "QUEUE"
를 이용해서 푸는 문제였다. 자바스크립트에서는 shift()
를 이용해 큐 문제를 풀 수 있다!
function solution(priorities, location) {
var answer = 0;
var arr = [];
var max_val = Math.max(...priorities);
// 위치 값이 저장된 arr 배열 만들어주기
for (let i = 0; i < priorities.length; i++) {
arr.push(i);
}
// location의 위치에 맞는 프로세스의 순서 찾기 위한 while문
while (priorities.length > 0) {
// priorities의 값이 shift()로 없어지기 때문에 max_val은 계속 갱신
max_val = Math.max(...priorities);
// 비교했을 때 최대값보다 작으면 큐이기 때문에 shift()하고 push()해서 이동
if (priorities[0] < max_val) {
priorities.push(priorities.shift());
arr.push(arr.shift());
// 크면 순서가 되었다는 뜻이므로 answer에 + 1해주고 해당값을 priorities에서 shift()
} else {
answer += 1;
priorities.shift();
if (arr.shift() === location) {
return answer;
}
}
}
return answer;
}
console.log(solution([1, 1, 9, 1, 1, 1], 0));
priorities
와 위치 정보를 저장하는 arr
이렇게 두 개의 배열을 가지고 문제를 푸는 사람도 있었고, priorities
와 arr
을 하나의 객체로 저장해서 푸는 사람도 있었다. arr
생성priorities
의 최대값 max_val
생성max_val
과 priorities
의 원소 비교priorities
의 원소 < max_val
: priorities
의 원소값과 위치값을 shift()
해서 다시 push()
answer++
해주고 priorities
의 원소값은 shift()
로 없애주기location
)인지 확인 같으면 return