undefined
[프로그래머스] 프린터 -JS 본문
반응형
문제 설명
순서 비교를 위하여 초기위치를 키값으로 배정한다.
배열의 가장 앞 요소와 나머지 요소들을 비교하여 큰 값이 존재한다면 배열의 맨뒤로 보내고
자신이 가장 크다면 printed 카운트(프린트 된 순서)를 1씩 올려준다.
이 때 키 값이 location과 같다면 printed를 리턴
문제 풀이
function solution(priorities, location) {
let objArr = []
let printed= 0
for(let i =0; i<priorities.length; i++) {
objArr.push({key: i, value:priorities[i]})
}
while(objArr.length > 0) {
let shifted = objArr.shift()
if(objArr.some(item => item.value > shifted.value)){
objArr.push(shifted)
} else {
printed++
if(shifted.key === location) return printed
}
}
}
1. priorities배열을 이용하여 objArr에 키값을 부여한 요소들을 넣는다.
2. 조건 반복을 해야하기에 while loop를 이용한다.
3. objArr의 길이가 0이 될때 까지 반복한다.
4. 먼저 배열의 처음 값을 빼주어 shited로 지정한다.
5. shifted보다 큰 값이 존재한다면 배열의 맨뒤로 보낸다.
6. 자신이 가장 큰 값이라면 print해주고(배열에서 빼내어 주고) printed + 1해준다. // 위에서 빼내고 비교했기 때문에 따로 빼주지 않는다.
7. 이 때 빼낸 요소의 key값이 location과 동일하다면 printed 를 리턴해준다.
배운 점
objArr =priorities.map((e,i)=>{
return {key:i,value:e}
})
forLoop + push 보다 간결하게 key값 부여 가능
반응형
'Coding Test' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 -자바스크립트 (0) | 2022.07.12 |
---|---|
[프로그래머스] 가장 큰 수 -JS (0) | 2022.07.09 |
[프로그래머스] 타겟 넘버 -JS (0) | 2022.07.07 |
[프로그래머스] 스킬트리 -JS (0) | 2022.07.06 |
[프로그래머스] 기능개발 - JS (0) | 2022.07.03 |
Comments