[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฆฐํฐ
https://programmers.co.kr/learn/courses/30/lessons/42587
๋ฌธ์ ์ ๊ทผ
์ธ์ ๋๊ธฐ์ด์์ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ ๋ถํฐ ์ธ์๋ฅผ ํด์ผํ๊ณ , location์ ์๋ ์์
์ด ๋ช๋ฒ์งธ๋ก ์ธ์๋๋์ง๋ฅผ ๊ตฌํด์ผํ๋ค.
๊ทธ๋์ task ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฐ์ ์์์ ์ฒ์ ์ฃผ์ด์ง ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๊ณ ์ด๋ฅผ ํ์ ์ ์ฅ์ ํ๊ณ ,
๊ฐ์ฅ ํฐ ์ฐ์ ์์๋ฅผ ํํํ๊ธฐ์ํด์ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด์ ์ต๋ ํ์ ์ด์ฉํ๋ค.
๊ทธ๋์ ํด๋น location์ ์๋ ์์
์ด ์ธ์๋ ๋๊น์ง while๋ฌธ์ ๋๋ฆฌ๋๋ก ํ๋ค.
Code
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Collections;
import java.util.LinkedList;
class Solution {
class task {
int priority;
int index;
public task(int priority, int index) {
this.priority = priority;
this.index = index;
}
}
public int solution(int[] priorities, int location) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder()); // ์ต๋ ํ ์์ฑ(์ฐ์ ์์๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ฅ)
Queue<task> print = new LinkedList<>(); //ํ๋ฆฐํธ ์ธ์ ๋๊ธฐ์ด์ ํ์ ์ ์ฅ
for(int i = 0; i<priorities.length; i++){
print.add(new task(priorities[i],i));
pq.add(priorities[i]);
}
while(!print.isEmpty()){
// ์ฐ์ ์์์ ๋ฐ๋ผ์ ํ๋ฆฐํธ์ ์ธ์๋ฅผ ์งํ
task cur = print.poll();
if(cur.priority == pq.peek()){
answer++;
if(cur.index == location) break;
pq.poll();
} else {
print.add(cur);
}
}
return answer;
}
}
์ด๋ ค์ ๋ ์ / ๋ฐฐ์ด ์ / ๋๋ ์
ํ๋ฆฐํธ์ ์์
์ ํ์ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด์ ๊ตฌํํ์๋ค.
์๋ ๊ธฐ๋ณธ ์ฐ์ ์์ ํ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ ์ต์ ํ์ด๊ธฐ ๋๋ฌธ์ ์์ฑํ ๋, Collections.reverseOrder()๋ฅผ ์ด์ฉํด์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ฅ๋๋ ๋งฅ์คํ์ผ๋ก ๋ฐ๊ฟ์ฃผ์๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๋ฐ๋จน๊ธฐ (0) | 2022.03.24 |
---|---|
[Algorithm/Java][๋ฐฑ์ค] 6603 ๋ก๋ (0) | 2022.03.21 |
[Algorithm/Java][๋ฐฑ์ค] 14502 ์ฐ๊ตฌ์ (0) | 2022.03.05 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๋งต๊ฒ (0) | 2022.02.26 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2022.02.18 |