반응형
코드
function solution(priorities, location) {
let answer = 0;
let compareArr = [];
let finArr = [];
let print;
// 처음 지정한 출력물이 나중에 몇번째로 이동해있는지 찾기위해 인덱스와 함께 있는 형태로 2차 배열을 만들어줌
priorities.forEach( (elem, idx) => {
let temp = [idx, elem];
compareArr.push(temp)
})
// 비교할 배열의 첫번째 값을 가지고 그 뒷 값들중 큰게 있냐 없냐로 비교배열에서 뺴서 finArr에 담을지 아니면 가장 뒤로 옮길지 결정함
while(compareArr[0]){
print = compareArr.shift();
if(compareArr.some( e => e[1] > print[1] )){
compareArr.push(print)
}else{
finArr.push(print);
}
}
// 인덱스로 시작했기때문에 +1 해준다
answer = finArr.findIndex(e => e[0] == location) + 1;
return answer;
}
느낀 점
Array.push()와 Array.shift()를 적절히 사용하면서 풀었고 some() 함수 활용이 매우 유용했던 문제였다.
반응형
'Algorithm' 카테고리의 다른 글
[자료구조] 그래프(feat. Javascript) (0) | 2022.11.21 |
---|---|
[Codility] PermMissingElem - Javascript (0) | 2021.07.15 |
[프로그래머스] k번째 수 - Javascript (0) | 2021.06.27 |
백준 No.11053 : 가장 긴 증가하는 부분 수열(LIS) [파이썬] (0) | 2021.03.18 |
백준 2630 문제(파이썬) (0) | 2021.03.16 |