Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- k번째수
- Brute Force
- Data Structure
- Javascript
- 이중우선순위큐
- 넓이우선탐색
- sorting
- 타겟 넘버
- Algorithm
- 깊이우선탐색
- 더 맵게
- Queue
- Programmers
- 다리를 지나는 트럭
- react-native-navigation
- Stack
- react-native bind
- hash
- 전화번호 목록
- 소수찾기
- 기능개발
- Virtual DOM
- 디스크 컨트롤러
- react
- 가장 큰 수
- react-native
- 완주하지 못한 선수
- heap
- browser workflow
- 주식
Archives
- Today
- Total
개발 블로그
[프로그래머스/Javascript/Queue] 프린터 본문
1. 문제설명(출처: programmers.co.kr/learn/courses/30/lessons/42587)
2. 문제풀이
1) 문제에서 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 알고 싶습니다. 라고 했으니, 해당 문서의 위치(location)에 표시를 하기 위해 [[1번 문서의 중요도, 요청한 문서 여부], [2번 문서의 중요도, 요청한 문서 여부], ... , [n번 문서의 중요도, 요청한 문서 여부]] 와 같은 형식의 q라는 queue를 만든다.
2) 몇번 인쇄가 됐는지 확인하기 위한 변수 cnt를 생성한다.
3) 아래 명령을 반복한다.
3-1) q 에서 맨 앞의 요소를 꺼내 cur에 저장한다.
3-2) 현재 q안에 cur보다 중요도가 높은 문서가 있는지 확인한다.
3-2-t) 만약 있다면
3-2-t-1) cur은 나중에 인쇄하기 위해 다시 q에 집어넣는다.
3-2-f) 만약 없다면
3-2-f-1) 현재 문서를 인쇄하고 cnt를 1늘려준다.
3-2-f-2) 인쇄한 문서가 요청한 문서인지 확인한다.
3-2-f-2-t) 만약 현재 문서가 요청한 문서라면
3-2-f-2-t-1) 지금까지 몇개의 문서가 인쇄됬는지를 저장하고 있는 cnt를 반환한다.
3. 결과코드
function solution(priorities, location) {
var q = priorities.map((t,i)=>([ t, i === location ]));
var cnt = 0;
while(true){
var cur = q.shift();
if(q.some(t => t[0] > cur[0])){
q.push(cur);
}else{
cnt++;
if(cur[1])
return cnt;
}
}
}
'IT > Programmers' 카테고리의 다른 글
[프로그래머스/Javascript/Sorting] 가장 큰 수 (0) | 2021.04.08 |
---|---|
[프로그래머스/Javascript/Sorting] K번째수 (0) | 2021.04.07 |
[프로그래머스/Javascript/Stack+Queue] 기능개발 (0) | 2021.04.06 |
[프로그래머스/Javascript/Stack] 주식가격 (0) | 2021.04.06 |
[프로그래머스/Javascript/Queue] 다리를 지나는 트럭 (0) | 2021.04.05 |