프로그래머스 LV2 #5 프린터

Jake Seo·2020년 7월 26일
0

프로그래머스 LV2

목록 보기
5/10

프로그래머스 LV2 #5 프린터

문제

풀이

let solution = (priorities, location) => {
    priorities = priorities.map((e,i) => [e, i]);
    let count = 0;

    while(priorities.length !== 0){
        let front = priorities.shift();

        if(priorities.filter(p => p[0] > front[0]).length > 0){
            priorities.push(front);
        }else {
            count++;
            if(front[1] === location){
                return count;
            }
        }
    }

    return ++count;
}

이 문제는 문제에 나온 방법을 그대로 구현해서 풀었습니다.

  1. 가장 앞의 원소를 꺼냄
  2. 중요도 높은 문서가 있을 시, 가장 마지막으로 이동
  3. 없으면 꺼낸 문서 프린트(우선순위 목록에서 파기)

그리고 내가 찾던 문서인지 확인하기 위해 처음에 map 메소드를 이용해 배열을 변환시키는 과정이 있습니다. 인덱스 번호가 곧 location이므로 내가 찾던게 나오면 바로 return 해줍니다.

shift, splice(0, 1) 차이

개인적으로 헷갈렸던 부분은 splice(0, 1)shift의 차이인데, 처음에 shift가 왠지 기억이 안나서 splice(0, 1)를 이용했다가 몇분정도 헤맸습니다.

[1, 2, 3, 4, 5].splice(0, 1)[1, 2, 3, 4, 5].shift()는 얼핏 생각하면 같은 결과를 반환할 것 같지만 다른 결과를 반환합니다.

[1, 2, 3, 4, 5].splice(0, 1) => [1]
[1, 2, 3, 4, 5].shift() => 1

splice는 배열에 싸서 반환하고,
shift는 배열에 싸지 않은 채 원소 그대로 반환합니다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글