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 |
Tags
- frontend roadmap study
- 머쓱이
- 인프런 자바스크립트 알고리즘 문제풀이
- 모던 자바스크립트 Deep Dive TIL
- KDT 프로그래머스 데브코스 프론트엔드
- Frontend Roadmap
- 우테캠 회고록
- 모던 자바스크립트 TIL
- react 프로젝트 리팩토링
- 리팩토링 회고
- useRef 지역 변수
- useEffect return
- 프로그래머스 K_Digital Training 프론트엔드
- TypeScript 문법 소개
- 투포인터알고리즘 js
- Vue3 Router
- K_Digital Training
- 프로그래머스 데브코스
- 모던 자바스크립트 딥다이브
- react customHook 예시
- KDT 프로그래머스
- 프로그래머스 K_Digital Training
- 모던 javascript Deep Dive
- 모던 자바스크립트 Deep Dive
- Vue3
- 프로그래머스 데브코스 프론트엔드
- 백준 js
- 프로그래머스 데브코스 프론트엔드 TIL
- 백준 node.js
- 개발자 특강
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[프로그래머스 JavaScript] 프린터 본문
🚩 프로그래머스 Level2 프린터 -> 스택/큐
📖 문제 설명
문제가 명확하게 설명되어 있어서 생략하겠습니다.
priorities 순위가 적혀있는 배열과 location 인쇄를 요청한 위치가 주어질때
해당 위치에 해당하는 문서가 몇번째로 출력되는지 파악하면 됩니다.
👉 소스 코드 ⏰시간복잡도 O(n^2)
function solution(priorities, location) {
var answer = 0;
//prioritiese와 쌍을 이루어 중요도에 따른 대기목록 순서를 가진다.
let print = Array.from({length: priorities.length}, (v,i) => i);
console.log(print)
//인쇄를 요청한 문서의 중요도와 순서가 담겨져있다.
let find = [priorities[location] ,location];
while(priorities.length !== 0){
let key = priorities.shift();//중요도
let value = print.shift();//대기목록
let max = Math.max(...priorities);//중요도 최대값
//현재 문서가 중요도가 가장 크고 인쇄를 요청한 문서일시
if(key >= max && key===find[0] && value === find[1]){
return ++answer;
}
//현재 문서가 중요도만 제일 클시
//-> 출력만 수행
else if(key >= max){
++answer;
}
//요청한 인쇄가 아니고 중요도가 낮은 문서일시
//-> 제일 뒤로 보내버린다.
else{
priorities.push(key);
print.push(value);
}
}
return answer;
}
👨💻 코드 설명
해당 priorities배열은 중요도만 있고 중복이 있으므로 주어진 위치 location의 문서 중요도와 순서를 알아야합니다.
이를 위해 print배열에 순서 [0, 1, 2, ...]와 find 배열에 요청한 인쇄 정보를 저장합니다.
이후, 배열이 없어질때 까지 priorities중요도와, print순서도를 앞에서 차례로 꺼내 find배열과 비교합니다.
찾는 문서일 경우는 횟수 증가 후 return을 해줍니다.
찾는 문서가 아니지만 중요도만 제일 클 시, 횟수만 증가해줍니다.
찾는 문서도 아니고 중요도도 작다면 제일 뒤에 해당값을 다시 넣어줍니다.
728x90
'알고리즘_JS > 프로그래머스_Level2' 카테고리의 다른 글
[프로그래머스 JavaScript] 카펫 (2) | 2021.07.25 |
---|---|
[프로그래머스 JavaScript] 조이스틱 (0) | 2021.07.22 |
[프로그래머스 JavaScript] 타켓 넘버 (0) | 2021.07.22 |
[프로그래머스 JavaScript] 오픈채팅방 (0) | 2021.07.22 |
[프로그래머스 JavaScript] 기능개발 (0) | 2021.07.21 |
Comments