문제
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
문제풀이
소스코드
class Solution {
public int solution(int[] priorities, int location) {
int[] moveIndex = new int[priorities.length];
int current = 0, temp = 0, m_temp = 0;
boolean isExist = false;
//초기 대기열의 인덱스 대입
for(int i = 0; i < priorities.length; i++)
moveIndex[i] = i;
//프린트 순서 정하기
while(temp != priorities.length) {
current = priorities[temp];
for(int j = temp+1; j < priorities.length; j++)
if(current < priorities[j]) // 우선순위가 더 높은게 있나 검사
isExist = true;
if(isExist) { // 한칸씩 앞당기기
for(int k = temp; k < priorities.length-1; k++)
priorities[k] = priorities[k+1];
priorities[priorities.length-1] = current;
for(int k = 0; k < priorities.length; k++)
if(moveIndex[k] >= m_temp) { // 이미 순서가 정해진 인덱스는 제외하고 변경시키기 위해
if(moveIndex[k] == m_temp) // 맨 앞에 있으면
moveIndex[k] = priorities.length - 1; // 맨 뒤 인덱스로 바꿔줌
else
moveIndex[k] -= 1; // 한 칸씩 앞으로 당겨지므로
}
}
if(!isExist){ // 우선순위가 높은게 없다면 그게 일순위
temp++;
m_temp++;
}
isExist = false;
}
return moveIndex[location] + 1;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 키패드 누르기(2020카카오 인턴십) 자바 (0) | 2021.11.25 |
---|---|
[프로그래머스] 네트워크 자바 (0) | 2021.11.19 |
[프로그래머스] 타겟 넘버 자바 (0) | 2021.11.18 |
[프로그래머스] 괄호 변환 자바 (0) | 2021.11.07 |
[프로그래머스] 크레인 인형뽑기 게임 자바 (0) | 2021.11.07 |