문제 설명
제안사항 및 입출력
문제 풀이
import java.util.*;
class Solution {
static class task{
int prior;
int loc;
public task(int prior,int loc){
this.prior=prior;
this.loc=loc;
}
}
public int solution(int[] priorities, int location) {
int answer = 0;
Queue<task> q = new LinkedList<>();
for(int i = 0 ; i < priorities.length ; i++){
q.add(new task(priorities[i],i));
}
while(true){
task tmp = q.poll();
boolean flag = false;
for(int i = 0 ; i < q.size();i++){
task sub = q.poll();
if(sub.prior>tmp.prior){
flag=true;
}
q.add(sub);
}
if(flag==false){
answer++;
if(tmp.loc==location){
break;
}
}else{
q.add(tmp);
}
}
return answer;
}
}
※ 내 생각
이 문제는 자료구조 중 큐를 이용하면 쉽게 해결할 수 있었습니다.
먼저 작업에 대한 중요성과 위치에 대한 정보를 담는 클래스를 만들어줍니다.
큐에 만들어준 클래스를 담아줍니다.
while를 통해서 원하는 위치의 값이 나올수 있는지를 찾아줍니다.
만약 나올 수 없다면 다시 넣어주는 작업을 반복해줍니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이중 우선 순위 큐(자바) / 힙 (0) | 2021.10.01 |
---|---|
[프로그래머스] 디스크 컨트롤러(자바) /Heap (0) | 2021.09.27 |
[프로그래머스] 더 맵게 (자바) / 힙 (0) | 2021.09.16 |
[프로그래머스] 다리를 지나는 트럭(자바) / 큐 (0) | 2021.09.12 |
[프로그래머스] 베스트 앨범(자바) / Hash (0) | 2021.09.05 |