์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- sort์ ๋ ฌ
- Android Studio
- ๊ฐ๊ฒฉ์ด ์ ์ผ ๋น์ผ ์ํ์ ์ ๋ณด ์ถ๋ ฅํ๊ธฐ
- JDK
- ์๋ฐ
- HashMap
- ํ๋ก๊ทธ๋จ์
- ๋ ธ์ ๋ณ ํ๊ท ์ญ ์ฌ์ด ๊ฑฐ๋ฆฌ ์กฐํํ๊ธฐ
- mysql
- ์๋๋ก์ด๋ ์คํ๋์ค
- ํฌ๋งท ์ง์ ์
- Eclipse
- ๋ฐฑ์ค
- github
- M1
- ๋งฅ๋ถ
- ๊นํ๋ธ
- ํ๋ก๊ทธ๋๋จธ์ค
- Java
- Iterator
- ์ฝ๋ฉํ ์คํธ
- homebrew
- ํธ๋ํฐ ๊ฐ๋ฆฌ๊ธฐ
- OAuth ์ธ์ฆ
- 27866
- SQL์ฝ๋ฉํ ์คํธ
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฌธ์์ด ์ซ์ ๋ณํ
- ํด์
- MAC OS
Archives
- Today
- Total
๊ฐ๋ฐ์ผ์ง
[Java] PriorityQueue (์ฐ์ ์์ ํ) / ํ๋ก์ธ์ค ๋ณธ๋ฌธ
728x90
๐ ๋งํฌ
๐ ๋ฌธ์ ์ค๋ช
- ์ด์์ฒด์ ๊ฐ ๋ค์ ๊ท์น์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ ๊ฒฝ์ฐ ํน์ ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง ์์๋ด๊ธฐ
- ์คํ ๋๊ธฐ ํ(Queue)์์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ํ๋๋ฅผ ๊บผ๋ ๋๋ค.
- ํ์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ์ค ์ฐ์ ์์๊ฐ ๋ ๋์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ํ์ ๋ฃ์ต๋๋ค.
- ๋ง์ฝ ๊ทธ๋ฐ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ์คํํฉ๋๋ค.
- ํ ๋ฒ ์คํํ ํ๋ก์ธ์ค๋ ๋ค์ ํ์ ๋ฃ์ง ์๊ณ ๊ทธ๋๋ก ์ข ๋ฃ๋ฉ๋๋ค.
- ํ์ฌ ์คํ ๋๊ธฐ ํ์ ์๋ ํ๋ก์ธ์ค์ ์ค์๋๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด priorities์, ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง ์๊ณ ์ถ์ ํ๋ก์ธ์ค์ ์์น๋ฅผ ์๋ ค์ฃผ๋ location์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํด๋น ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
๐ ์์
priorities | location | return |
[2, 1, 3, 2] | 2 | 1 |
[1, 1, 9, 1, 1, 1] | 0 | 5 |
โ๏ธ ํ์ด ์์
- ์ฐ์ ์์ ํ ์ ์ธ (๋ด๋ฆผ์ฐจ์)
- ์ฐ์ ์์ ํ์ priorities ์์ ์ถ๊ฐ
- ํ๊ฐ ๋น ๋๊น์ง ์ฐ์ ์์ ํ๋ฅผ ์ํํ๋ฉด์ location์ ์์น ์ฐพ๊ธฐ
- ํ์ฌ ์์ ์ด location๊ณผ ๊ฐ์ผ๋ฉด ๋ฐํ
๐ป ์ฝ๋
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
for (int num: priorities) {
queue.offer(num);
}
int answer = 0;
while (!queue.isEmpty()) {
for (int i = 0; i < priorities.length; i++) {
if (queue.peek() == priorities[i]) {
queue.poll();
answer++;
if (location == i) {
return answer;
}
}
}
}
return answer;
}
}
๐PriorityQueue
- ๋ค์ด๊ฐ๋ ์์์ ์๊ด์์ด ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ๊ตฌ์กฐ
- ์ผ๋ฐ์ ์ธ ํ๋ ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ FIFO ๊ตฌ์กฐ
// ์์ ์ซ์๊ฐ ๋จผ์ ๋์ด (๊ธฐ๋ณธํ)
PriorityQueue<Integer> queue = new PriorityQueue<>();
// ํฐ ์ซ์๊ฐ ๋จผ์ ๋์ด
PriorityQueue<Integer> queue = newn PriorityQueue<>(Collections.reverseOrder());
๋ฉ์๋
add() | ์ฐ์ ์์ ํ์ ์์๋ฅผ ์ถ๊ฐ (์ ์ฅ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ์๋ฌ ๋ฐ์) |
offer() | ์ฐ์ ์์ ํ์ ์์ ์ถ๊ฐ (์ถ๊ฐ ์คํจ์ false ๋ฐํ) |
poll() | ์ฐ์ ์์ ํ์์ ์ฒซ ๋ฒ์งธ ๊ฐ ๋ฐํ (์ ์ฅ๋ ๊ฐ ์ญ์ ) / ๋น์์ผ๋ฉด null |
remove() | ์ฐ์ ์์ ํ์์ ์ฒซ ๋ฒ์งธ ๊ฐ ๋ฐํ (์ ์ฅ๋ ๊ฐ ์ญ์ ) / ๋น์์ผ๋ฉด ์๋ฌ ๋ฐ์ |
isEmpty() | ์ฐ์ ์์ ํ์ ๊ฐ์ด ์์ผ๋ฉด false, ์์ผ๋ฉด true ๋ฐํ |
clear() | ์ฐ์ ์์ ํ ์ด๊ธฐํ |
size() | ์ฐ์ ์์ ํ์ ์์ ์ ๋ฐํ |
๐Reference
728x90
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ (0) | 2024.05.08 |
---|---|
[Java] String โ Int / Int โ String ๋ณํํ๊ธฐ (0) | 2024.05.07 |
Array / ArrayList / LinkedList (0) | 2024.05.02 |
[JAVA] ์คํ/ํ (0) | 2024.05.01 |
[JAVA] Iterator entrySet(), keySet(), values() (0) | 2024.04.25 |
Comments