[Programmers/JAVA] 프린터
2023. 2. 20. 19:59ㆍ자바/프로그래머스
내 코드
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
int index=priorities.length-1;
//queue에 priorities넣기
Queue<Integer> pri_queue=new LinkedList<>();
for(int p : priorities) {
pri_queue.add(p);
}
//priorities값을 정렬
Arrays.sort(priorities);
//priorities의 최대값보다 숫자가 작으면 뒤로 보내기
while(location>=0) {
if(pri_queue.peek()<priorities[index]) {
pri_queue.add(pri_queue.peek());
pri_queue.remove();
if(location==0) {
location+=pri_queue.size()-1;
}else{
location--;
}
}else {
pri_queue.remove();
answer++;
location--;
index--;
}
}
return answer;
}
}
느낀점
확실히 알고리즘 문제도 많이 풀다보면 실력이 느나..!?
풀이가 전보다 더 빠르게 나오는 듯하다.
큐를 사용해서 맨 앞 종이의 우선순위가 낮으면 remove해서 맨 뒤로 보내줬다. 와중에 location도 확인해야하기 때문에 매번 location--; 를 해줬고, location이 0이 되면 (=> 맨뒤로 넘어가면) location에 pri_queue.size()-1; 값을 줆으로써 위치값을 부여했다. 그러다 location이 remove되게 되면 location값이 음수가 되면서 while문은 끝난다!
'자바 > 프로그래머스' 카테고리의 다른 글
[Programmers/JAVA] 연속 부분 수열 합의 개수 (0) | 2023.02.22 |
---|---|
[Programmers/JAVA] [1차] 뉴스 클러스터링 (0) | 2023.02.21 |
[Programmers/JAVA] 귤 고르기 (0) | 2023.02.20 |
[Programmers/JAVA] n^2 배열 자르기 (0) | 2023.02.17 |
[Programmers/JAVA] 기능개발 (0) | 2023.02.16 |