문제
https://programmers.co.kr/learn/courses/30/lessons/42587#
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린��
programmers.co.kr
시행착오
import java.util.*;
class Solution {
public void shiftElements(int[] priorities){
int temp = priorities[0];
for(int i=1; i<priorities.length; i++){
priorities[i-1] = priorities[i];
}
priorities[priorities.length-1] = temp;
}
public int solution(int[] priorities, int location) {
int answer = location;
int idx=0;
while(true){
//뒤에 큰게 있는지 검사
boolean maxFlag = true;
int j = priorities[idx];
for(int i=idx; i<priorities.length ; i++){
if(Math.max(j,priorities[i])!=j){
maxFlag = false;
shiftElements(priorities);
if(answer==0)
answer=priorities.length-1;
else
answer--;
break;
}
}
if(maxFlag == true){
idx++;
if(idx==priorities.length)
break;
}
}
return answer+1;
}
}
Queue조차 쓰지 않은 코드지만 왜 틀렸을까ㅠ
추가한 테스트케이스까지 맞췄지만 정작 코드채점 결과는 20.0이다. (테스트케이스 1, 5, 9, 14만 통과)
priorities[int[]] | location | return |
[2, 2, 2, 1, 3, 4] | 3 | 6 |
풀이
Linkedlist로 documents를 구현했다.
documents의 가장 앞 문서의 우선순위가 가장 높을 때까지 삽입과 삭제를 반복한다.
나머지에 더 중요한 문서가 없으면 인쇄한다.
이 때 documents의 firstDoc의 idx가 location과 같지 않으면 firstDoc을 빼고 answer을 하나씩 더한다.
코드
import java.util.LinkedList;
class DocNode{
int idx;
int priority;
public DocNode(int idx, int priority){
this.idx = idx;
this.priority = priority;
}
}
class Solution {
public int solution(int[] priorities, int location) {
int answer = 1;
LinkedList<DocNode> documents = new LinkedList<>();
for(int i=0; i<priorities.length ; i++){
documents.add(new DocNode(i, priorities[i]));
}
while(documents.size()>1){
DocNode firstDoc = documents.getFirst();
for(int i=1; i<documents.size(); i++){
if(firstDoc.priority < documents.get(i).priority){
documents.addLast(firstDoc);
documents.removeFirst();
break;
}
if(i==documents.size()-1){
if(firstDoc.idx==location)
return answer;
else{
documents.removeFirst();
answer++;
}
}
}
}
return answer;
}
}
'Preparing Coding Test > Programmers L2' 카테고리의 다른 글
[Java/프로그래머스] 카카오프렌즈 컬러링북 (0) | 2020.08.15 |
---|---|
[Java/프로그래머스] 멀쩡한 사각형 (0) | 2020.08.12 |
[Java/프로그래머스] 스킬트리 (0) | 2020.08.10 |
[Java/프로그래머스] 다리를 지나는 트럭 (0) | 2020.08.10 |
[Java/프로그래머스] 124 나라의 숫자 (0) | 2020.08.07 |