반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

undefined

[프로그래머스] 프린터 -JS 본문

Coding Test

[프로그래머스] 프린터 -JS

JavaScripter 2022. 7. 8. 13:08
반응형

문제 설명

순서 비교를 위하여 초기위치를 키값으로 배정한다.

배열의 가장 앞 요소와 나머지 요소들을 비교하여 큰 값이 존재한다면 배열의 맨뒤로 보내고

자신이 가장 크다면 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값 부여 가능

반응형
Comments