프로그래머스 연습문제 - 프린터( JS, Lv2, 스택/큐)

j_wisdom_h·2023년 2월 22일
0

CodingTest

목록 보기
44/58

프로그래머스 연습문제 - 프린터( JS, Lv2, 스택/큐)

1. 문제설명


2. 제한사항 & 입출력 예


3. Solution

function solution(priorities, location) {
    let result = 0;
	while (priorities.length > 0) {
		let p = priorities.shift();
		
        if (priorities.filter((el) => el > p).length) {
			priorities.push(p);
		}
        else {
            result++;
            if (location === 0) {break;}
		}
        location < 1 ?  location = priorities.length - 1 : location -= 1;
	}
	return result;
}
  1. 대기열에 맨 앞의 원소를 빼내어 p에 할당한다.

  2. 만약 맨 앞의 원소가 빠진 우선순위배열에서 p보다 큰 것이 있는지 찾는다.
    2-1. 있다면 우선순위 배열의 맨 뒤에 다시 넣는다.(우선순위가 큰 것부터 출력되어야하기 때문)
    2-2. 없다면 p가 가장 큰 우선순위를 갖는다는 것을 뜻하므로 p가 출력된 것으로 처리한다. result값을 증가시켜 출력순서를 증가

  3. 출력순서를 알고싶은 원소의 index(=location)
    location < 1 이라면 location = priorities.length - 1 로 인덱스를 맨뒤로 이동, 그렇지 않다면 -1을 하여 앞으로 한 칸 이동

  4. 맨 앞의 원소가 빠진 우선순위배열에서 p보다 큰 것 없고 location이 0이라면(출력순서를 알고싶은 원소가 첫번째에 위치), break하며 루프를 빠져나간다.


참고하기

some
: 배열 안의 어떤 요소라도 주어진 판별 함수를 적어도 하나라도 통과하는지 테스트

const array = [1, 2, 3, 4, 5];

// Checks whether an element is even
const even = (element) => element % 2 === 0;

console.log(array.some(even));
// Expected output: true

=> filter(function).length 대신 사용할 수 있겠다.

profile
뚜잇뚜잇 FE개발자

0개의 댓글