Tags
- CodingTest
- ๊น์ด ์ฐ์ ํ์
- ์ ์๋ก
- greedy
- ๊ต์ฌ
- BOJ
- LV2
- ์๋ฃ๊ตฌ์กฐ
- queue
- ๊ทธ๋ํ ํ์
- Java
- ์ํ
- PGM
- stack
- sort
- ๊ตฌํ
- BFS
- Study
- ๋๋น ์ฐ์ ํ์
- ๋ฌธ์์ด
- ์๋ฎฌ๋ ์ด์
- dfs
- ๊ทธ๋ํ ์ด๋ก
- SpringBoot
- Brute Force Algorithm
- DP
- ์ ๋ ฌ
- ๋ฐฑํธ๋ํน
- Dynamic Programming
- Python
Archives
๊ธฐ๋ก๋ฐฉ
Lv.2 : ํ๋ก์ธ์ค ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ํ์์ ์ ์์๋ฅผ ๊บผ๋ธ๋ค. (poll)
- ๊บผ๋ธ ์์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋ ๋์ ์์๊ฐ ์๋ค๋ฉด, ๊บผ๋ธ ์์๋ฅผ ๋ค์ ํ์ ๋ฃ๋๋ค. (add)
- ์ฐ์ ์์๋๋ก ์์๋ฅผ ๊บผ๋ด๋ค๊ฐ ์ฒ์ ์์น๊ฐ location์ธ ์์๊ฐ ๋์ฌ ๋์ ๊บผ๋ธ ์์ ์๋ฅผ ๋ฐํํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ์์๋ค์ ์ฐ์ ์์์ ์ฒ์ ์์น๋ฅผ ๊ธฐ์ตํ๊ธฐ์ํด ๋ ์์๋ฅผ ๋ด์ ํด๋์ค Process๋ฅผ ๋ง๋ค์ด Queue์ ์ ์ฅํ๋ค.
- ์ฐ์ ์์๋๋ก ๊บผ๋ด๊ธฐ ์ํด PriorityQueue์ ์์๋ฅผ ์ ์ฅํ๋ค.
- ์ฐ์ ์์ ํ์ ๋์จ ์์์ ๊ฐ์ ์์๊ฐ ๋์ฌ ๋ ๊น์ง ์ผ๋ฐ ํ์์ ์์๋ฅผ ๊บผ๋ธ๋ค.
- ๊บผ๋ธ ์์์ ์ฒ์ ์์น๊ฐ location๊ณผ ๊ฐ๋ค๋ฉด ํ์ฌ๊น์ง ์ฐ์ ์์ ํ์์ ๊บผ๋ธ ์์๋ค์ ์๋ฅผ ๋ฐํํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.Queue;
import java.util.PriorityQueue;
import java.util.ArrayDeque;
import java.util.Collections;
class Solution {
private class Process {
private int priority;
private int seq;
public Process(int priority, int seq) {
this.priority = priority;
this.seq = seq;
}
}
public int solution(int[] priorities, int location) {
Queue<Process> que = new ArrayDeque<>();
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for (int i = 0; i < priorities.length; i++) {
pq.add(priorities[i]);
que.add(new Process(priorities[i], i));
}
for (int i = 1; i <= priorities.length; i++) {
int target = pq.poll();
Process process = que.poll();
while(process.priority != target) {
que.add(process);
process = que.poll();
}
if (process.seq == location)
return i;
}
return -1;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ฐ์ ์์์ ์ด๊ธฐ ์์น๋ฅผ ์ ์ฅํ๊ธฐ ์ํด Process ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ค.
- ์ฐ์ ์์๋ฅผ ๋ด์ intํ ๋ฐฐ์ด priorites๋ฅผ ์ผ๋ฐ ํ์ ์ฐ์ ์์ ํ์ ๊ฐ๊ฐ ๋ณต์ฌํด ์ ์ฅํ๋ค.
- ์ฐ์ ์์ ํ์์ ๋์จ ์์๊ฐ ์ผ๋ฐ ํ์์ ๋์ฌ ๋ ๊น์ง ๋ฌธ์ ์ ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- ๊บผ๋ธ ์์์ ์ด๊ธฐ ์์น๊ฐ location๊ณผ ๊ฐ๋ค๋ฉด ํ์ฌ ์ฐ์ ์์ ํ์์ ๊บผ๋ธ ์์์ ์๋ฅผ ๋ฐํํ๋ค.
๐ธ end ๐ธ
- ์ฒซ ํ์ด์์๋ ์ฐ์ ์์ ํ๋ง ๋๊ณ , Process ํด๋์ค์ Comparable์ ๋ฃ์ด ์ฌ์ฉํ๋ค.
- ์์ ๋ ํต๊ณผํ์ง๋ง, ๋ฌธ์ ์ 1๋ฒ๊ณผ 2๋ฒ ์กฐ๊ฑด์์ ๊บผ๋ธ ์์๋ฅผ ๋ค์ ๋ฃ๋ ์์ ์ด ์์ด์ ์คํ ์คํจํ๋ค.
- ์๋ง ์์ ๋ ์ฐ์ ์์ ํ๋ก ๋๋ ค์๋ ๋๋๋ก ํจ์ ์ ํ๋์ ๊ฒ ๊ฐ๋ค.
- ๋ค๋ฅธ ์ฝ๋๋ฅผ ๋ณด๋ ์ฐ์ ์์ ํ ๋์ ์ผ๋ฐ ์ ๋ ฌ์ ์ฌ์ฉํ๊ฑฐ๋, ์ผ๋ฐ ํ๋ ์ฌ์ฉํ์ง ์๊ณ location ๊ฐ์ ์ฎ๊ฒจ๊ฐ๋ฉฐ ์ธ๋ฑ์ค ์์ง์์ผ๋ก ํ๋ฅผ ๋์ ํ๋ ๋ฐฉ์์ ํ์ด๊ฐ ์์๋ค.
- ์ ๋ ฌ๋ 1๋ฒ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ ์ ๋ ฌ๋ ํจ์จ์ด ๋น์ทํ ๊ฒ ๊ฐ๊ณ , ํ ๋์ location์ ์์ง์ด๋๊ฑด ์ด๊ธฐ ์์น๋ฅผ ๊ธฐ์ตํ์ง ์์๋ ๋์ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ ๋ชจ๋ ์ฑ๊ธธ ์ ์๋ ์ข์ ์๋ฃจ์ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.2 : k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (0) | 2023.11.08 |
---|---|
Lv.2 : ๋ด์ค ํด๋ฌ์คํฐ๋ง (0) | 2023.11.07 |
BOJ_1235 : ํ์ ๋ฒํธ (0) | 2023.11.02 |
Lv.2 : ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2023.11.02 |
BOJ_1418 : K-์ธ์ค์ (0) | 2023.11.01 |