[프로그래머스 레벨투] 프린터🖨

9rganizedChaos·2021년 10월 15일
0
post-thumbnail

🔽 문제 링크

https://programmers.co.kr/learn/courses/30/lessons/42587

✍🏼 나의 수도 코드

  1) piorities 맨 앞의 요소가 해당 배열의 가장 큰 요소일 경우, 맨앞으로 요소를 shift, location을 1 줄이고, count를 1 늘린다!
  2) 그렇지 않은 경우! 맨앞의 요소를 배열 맨뒤로 옮긴다.
  3) 만일 로케이션이 0이었다면, 배열의 length - 1로 변환하고, 그렇지 않았다면 location--
  4) 반복문이 종료되면 count를 리턴한다.

👨🏻‍💻 나의 문제 풀이

function solution(priorities, location) {
    let count = 0;
    do {
        if(priorities[0] === Math.max(...priorities)){
            priorities.shift();
            location--;
            count++;
        } else {
            priorities.push(priorities.shift());
            if(location === 0) location = priorities.length - 1;
            else location--;
        }
    } while (location >= 0)
    return count;
}

👩🏻‍💻 다른 사람의 코드

function solution(priorities, location) {
    var list = priorities.map((t,i)=>({
        my : i === location,
        val : t
    }));
    var count = 0;        
    while(true){
        var cur = list.splice(0,1)[0];        
        if(list.some(t=> t.val > cur.val )){
            list.push(cur);                        
        }
        else{            
            count++;
            if(cur.my) return count;
        }
    }
}

🍯 알게 된 것들

  • splice 배열로 값 반환함!
  • some 메서드 활용하기
  • 객체를 통해 요소에 의미 부여하기! (배열은 순서에 집중하는 자료구조)
profile
부정확한 정보나 잘못된 정보는 댓글로 알려주시면 빠르게 수정토록 하겠습니다, 감사합니다!

0개의 댓글