반응형
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
- SW역량테스트
- 다이나믹프로그래밍
- 그래프
- 싸피
- kakao
- SWEA
- 알고리즘
- 스택
- 카카오
- BFS
- 삼성
- 프로그래머스
- 코테
- SSAFY
- sort
- 자바스크립트
- Backjoon
- boj
- algorithm
- 백준
- 완전탐색
- 파이썬
- DP
- DFS
- Python
- javascript
- 자료구조
- Blind
- 힙큐
- 코딩테스트
Archives
- Today
- Total
맞왜틀
[JavaScript] 프로그래머스 - 프린터 본문
반응형
문제 해결
1. 인쇄되는 조건과 내 문서의 위치 그리고 인쇄가 몇번 됐는지 체크하며 문제를 해결한다.
2. 맨 앞의 문서를 꺼내고 우선순위가 제일 높은지 확인한다.
3. 우선순위가 제일 높다면 인쇄를 하고 카운트를 올려준다.
4. 아니라면 꺼낸 문서를 맨 뒤에 집어 넣는다.
5. 문서를 꺼낼 때마다 내문서의 위치를 바꿔준다.
6. 다시 2번으로 돌아가 반복한다.
😎 스택/큐 문제이다.
소스 코드
function solution(priorities, location) {
var answer = 0;
// 인쇄를 몇번 했는지
var cnt = 0
// 내문서의 위치
var myDoc = location
while (priorities.length > 0) {
// 맨 앞의 문서를 꺼낸다
var c = priorities.shift()
// 만약 맨앞의 문서의 우선순위보다 높은 문서가 존재한다면
if (priorities.filter((e) => e > c).length > 0) {
// 인쇄를 하지 않고 배열의 맨 뒤에 넣는다.
priorities.push(c)
// 맨앞의 문서의 우선순위보다 높은 문서가 없다면
} else {
// 인쇄 카운트를 올려주고
cnt ++
// 그게 바로 내문서라면
if (myDoc == 0) {
// 함수를 종료하고 cnt를 리턴한다.
return answer = cnt
}
}
// 문서를 하나 꺼낼 때마다 내문서의 위치를 하나씩 줄여간다
myDoc --
// 만약 내문서가 맨뒤로 갔다면
if (myDoc === -1) {
// 내문서 위치인덱스도 맨뒤로 바꿔준다.
myDoc = priorities.length - 1
}
}
return answer;
}
console.log(solution([2, 1, 3, 2], 2))
console.log(solution([1, 1, 9, 1, 1, 1], 0))
출처: 프로그래머스
문제: https://programmers.co.kr/learn/courses/30/lessons/42587?language=javascript
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린��
programmers.co.kr
반응형
'Algorithm Problem > JavaScript' 카테고리의 다른 글
| [javascript] 프로그래머스 - 두 개 뽑아서 더하기 (2) | 2020.10.19 |
|---|---|
| [JavaScript] 프로그래머스 - 베스트앨범 (0) | 2020.08.01 |
| [JavaScript] 프로그래머스 - 영어 끝말잇기(Summer/Winter Coding(~2018)) (0) | 2020.07.26 |
| [JavaScript] 프로그래머스 - 기능개발 (0) | 2020.07.25 |
| [JavaScript] 프로그래머스 - 체육복 (0) | 2020.07.25 |