코딩테스트/프로그래머스
[Java] 프로그래머스 - 프린터 (2단계)
배똥회장
2022. 5. 12. 10:26
728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
//프린트 대기열을 표현하기 위해 큐 선언
Queue<Integer> list = new LinkedList<>();
//큐에 0부터 priorities 길이 - 1만큼 숫자를 넣음
for (int i = 0; i < priorities.length; i++) {
list.add(i);
}
//큐가 비워질 때까지 반복
while (!list.isEmpty()) {
//제일 먼저 들어온 숫자 꺼내기
int p = list.poll();
//꺼낸 숫자의 우선순위 선언
int num = priorities[p];
//우선순위가 높은게 있는지 없는지 체크할 용도
boolean value = false;
//priorities를 하나씩 보면서 우선순위가 더 큰게 있는지 확인하기
for (int i = 0; i < priorities.length; i++) {
if (i == p) continue;
if (priorities[i] > num) {
value = true;
break;
}
}
//만약 우선순위가 높은게 없다면
if (!value) {
answer++; //answer은 몇 번째 순서로 꺼내진건지를 파악하는 것 그래서 1 추가
priorities[p] = 0; //우선순위를 끝냈으니까 0으로 리셋
if (location == p) break; //만약 location과 숫자가 동일하다면 while 종료
} else {
list.add(p); //우선순위가 높은게 있다면 그냥 다시 맨 뒤로 넣기
}
}
return answer;
}
}
테스트 1 〉 | 통과 (0.26ms, 74.5MB) |
테스트 2 〉 | 통과 (0.89ms, 81.1MB) |
테스트 3 〉 | 통과 (0.16ms, 73.3MB) |
테스트 4 〉 | 통과 (0.16ms, 89MB) |
테스트 5 〉 | 통과 (0.22ms, 75.8MB) |
테스트 6 〉 | 통과 (0.28ms, 72.2MB) |
테스트 7 〉 | 통과 (0.20ms, 71.8MB) |
테스트 8 〉 | 통과 (0.69ms, 67.4MB) |
테스트 9 〉 | 통과 (0.15ms, 85.4MB) |
테스트 10 〉 | 통과 (0.24ms, 73.7MB) |
테스트 11 〉 | 통과 (0.65ms, 74.4MB) |
테스트 12 〉 | 통과 (0.19ms, 74.7MB) |
테스트 13 〉 | 통과 (0.71ms, 75.7MB) |
테스트 14 〉 | 통과 (0.17ms, 74.6MB) |
테스트 15 〉 | 통과 (0.19ms, 77MB) |
테스트 16 〉 | 통과 (0.23ms, 77.3MB) |
테스트 17 〉 | 통과 (0.65ms, 78.3MB) |
테스트 18 〉 | 통과 (0.17ms, 80.3MB) |
테스트 19 〉 | 통과 (0.42ms, 78MB) |
테스트 20 〉 | 통과 (0.19ms, 80.3MB) |
728x90