티스토리 뷰
프로그래머스의 "프린터" 문제는 주어진 프린터 대기열에서 현재 대기열에서 가장 앞에 있는 문서를 꺼내어 출력하는 작업을 반복하면서, 출력될 문서가 원하는 문서인 경우 출력을 멈추고 출력까지 걸린 시간을 반환하는 문제입니다.
function solution(priorities, location) {
let answer = 0;
let queue = priorities.map((priority, index) => ({ priority, index })); // 각 문서마다 우선순위와 인덱스 정보를 객체로 만들어 큐에 넣음
while (queue.length > 0) { // 큐가 빌 때까지 반복
let first = queue.shift(); // 가장 앞에 있는 문서를 큐에서 꺼냄
if (queue.some((doc) => doc.priority > first.priority)) { // 큐에 우선순위가 더 높은 문서가 있다면
queue.push(first); // 가장 앞에 꺼낸 문서를 큐의 가장 뒤에 넣음
} else { // 우선순위가 가장 높은 문서라면
answer++; // 출력될 문서의 개수를 1 증가시킴
if (first.index === location) { // 출력될 문서가 원하는 문서라면
break; // 출력까지 걸린 시간을 반환하기 위해 반복문을 빠져나감
}
}
}
return answer;
}
위 코드에서는 priorities 배열에서 각 문서의 우선순위와 인덱스 정보를 담은 객체를 만들어 queue 배열에 넣습니다. 이후 queue 배열이 빌 때까지 반복하면서, 가장 앞에 있는 문서를 큐에서 꺼내어 우선순위가 더 높은 문서가 큐에 있는지 확인하고, 있다면 큐의 가장 뒤에 다시 넣어줍니다. 그렇지 않은 경우에는 출력될 문서의 개수를 1 증가시키고, 출력될 문서가 원하는 문서인 경우에는 반복문을 빠져나가 출력까지 걸린 시간을 반환합니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- focus와blur
- 항해솔직후기
- 항해플러스프론트엔드
- vite
- 알고리즘
- 로그인 인증
- http
- 구름톤
- 그림으로 이해하는 시스템 설계
- Repository pattern
- 더미데이터
- 레포지토리패턴
- event종류
- 디자인시스템
- react
- 항해플러스후기
- 이벤트리스너
- 시스템설계
- vue.js3
- Vue.js
- React18v
- 프로덕트설계
- 결제기능
- props
- JWT토큰
- store.js
- 개발자
- vue3
- 회고
- eventListner
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함