풀이
1. 배열에 index를 부여해야한다. 예를들어 기존 배열 index로보면 0이 첫번째 1이 두번쨰... 이런식으로 가지만 해당 문제에서는 만약 큰 수가 존재하면 다시 넣어야 한다는 가정이 있다. 만약 0번째 index에 있는 데이터를 다시 넣게 된다면 0번 index 에서 arr.length-1 값이 되어 버린다. 그렇다면 location 인자로 주어지는 값은 다른 값을 가르키게 되는 것이다.
2. 먼저 map을 통해 숫자 배열을 객체배열로 변경하면서 fixIndex 프로퍼티를 추가한다.
3. while(true) 를 통해 실행하고, 배열에 첫번째 있는 값을 뽑아서 그 값이 가장 큰지를 체크하고 가장 크지 않으면 첫번쨰 있던 값을 맨뒤로 보낸다. 객체 배열이기때문에 처음에 부여한 인덱스는 fixIndex 프로퍼티로 값을 보존할 수 있다.
4. 그렇게 값비교를 하면서 가장 큰 값을 찾고 그 다음부터 fixIndex와 인자로 주어진 location이 같은 순서를 반복해서 찾은 뒤 return 하면 정답이다.
function solution(priorities, location) {
const list = priorities.map((data, index) => {
return {
fixIndex: index,
num: data
}
});
let count =0;
while(true){
const current = list.splice(0,1)[0];
if(list.some(e => e.num > current.num)){
list.push(current);
}else{
count++;
if(current.fixIndex === location) return count;
}
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 - 주식가격 (Javascript) 풀이 (0) | 2024.06.16 |
---|---|
프로그래머스 - 다리를 지나는 트럭 (Javascript) 풀이 (0) | 2024.06.15 |
프로그래머스 - 기능개발 (Javascript) 풀이 (1) | 2024.06.09 |
프로그래머스 - 같은 숫자는 싫어 (Javascript) 풀이 (0) | 2024.06.08 |
프로그래머스 - 추억 점수(Javascript)풀이 (0) | 2024.06.05 |