-
[프로그래머스] 스택/큐 - 프린터알고리즘 공부/문제 풀이 2020. 8. 11. 15:13
이전 문제와 마찬가지로 인쇄 목록의 순서가 있기 때문에 큐를 떠올렸다.
큐를 이용하여 문제를 해결하였다.
class Waiting{ int priority; //우선순위와 int index; //location 변수와 비교 위해 index 추가 public Waiting(int p,int i) { this.priority=p; this.index=i; } } static int solution(int[] priorities, int location) { int answer = 0; //뽑힌 인쇄 수 == 뽑힌 인쇄 순서 Queue<Waiting> q=new LinkedList<Waiting>(); //대기 큐 초기화 for(int i=0;i<priorities.length;i++) q.offer(new Waiting(priorities[i],i)); //내림차순 배열 Arrays.sort(priorities); int top=priorities.length-1; //가장 큰 값 가리킴 while(!q.isEmpty()) { //큐의 맨앞 노드가 제일 큰 우선순위를 가질 때 --> 출력 if(top>-1 && q.peek().priority==priorities[top]) { Waiting tmp=q.poll(); //대기 인쇄 목록에서 제거 answer++; top--; // 뽑힌 인쇄 수 ++ if(tmp.index==location) break; //출력한 그 인쇄목록이 location에 위치한 변수였을 때 } // 뒤에 더 큰 우선순위가 존재할 때 --> 뒤로 보내기 else { Waiting back=q.poll(); // 큐에서 제거 후 q.offer(back); // 뒤에 삽입 } } return answer; }
'알고리즘 공부 > 문제 풀이' 카테고리의 다른 글
[프로그래머스] 힙 - 디스크 컨트롤러 (1) 2020.08.12 [프로그래머스] 힙 - 더 맵게 (1) 2020.08.11 [프로그래머스] 스택/큐 - 다리를 지나는 트럭 (1) 2020.08.11 [프로그래머스] 스택/큐 - 기능개발 (1) 2020.08.10 [프로그래머스] 스택/큐 - 주식가격 (1) 2020.08.10