๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/42587
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
์ด์์ฒด์ ์ ์ญํ ์ค ํ๋๋ ์ปดํจํฐ ์์คํ ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ์์๋ ์ด์์ฒด์ ๊ฐ ๋ค์ ๊ท์น์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ ๊ฒฝ์ฐ ํน์ ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง ์์๋ด๋ฉด ๋ฉ๋๋ค.
1. ์คํ ๋๊ธฐ ํ(Queue)์์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ํ๋๋ฅผ ๊บผ๋
๋๋ค.
2. ํ์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค ์ค ์ฐ์ ์์๊ฐ ๋ ๋์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ํ์ ๋ฃ์ต๋๋ค.
3. ๋ง์ฝ ๊ทธ๋ฐ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ๋ฐฉ๊ธ ๊บผ๋ธ ํ๋ก์ธ์ค๋ฅผ ์คํํฉ๋๋ค.
3.1 ํ ๋ฒ ์คํํ ํ๋ก์ธ์ค๋ ๋ค์ ํ์ ๋ฃ์ง ์๊ณ ๊ทธ๋๋ก ์ข
๋ฃ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ํ๋ก์ธ์ค 4๊ฐ [A, B, C, D]๊ฐ ์์๋๋ก ์คํ ๋๊ธฐ ํ์ ๋ค์ด์๊ณ , ์ฐ์ ์์๊ฐ [2, 1, 3, 2]๋ผ๋ฉด [C, D, A, B] ์์ผ๋ก ์คํํ๊ฒ ๋ฉ๋๋ค.
ํ์ฌ ์คํ ๋๊ธฐ ํ(Queue)์ ์๋ ํ๋ก์ธ์ค์ ์ค์๋๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด priorities์, ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง ์๊ณ ์ถ์ ํ๋ก์ธ์ค์ ์์น๋ฅผ ์๋ ค์ฃผ๋ location์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํด๋น ํ๋ก์ธ์ค๊ฐ ๋ช ๋ฒ์งธ๋ก ์คํ๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- priorities์ ๊ธธ์ด๋ 1 ์ด์ 100 ์ดํ์
๋๋ค.
- priorities์ ์์๋ 1 ์ด์ 9 ์ดํ์ ์ ์์ ๋๋ค.
- priorities์ ์์๋ ์ฐ์ ์์๋ฅผ ๋ํ๋ด๋ฉฐ ์ซ์๊ฐ ํด ์๋ก ์ฐ์ ์์๊ฐ ๋์ต๋๋ค.
- location์ 0 ์ด์ (๋๊ธฐ ํ์ ์๋ ํ๋ก์ธ์ค ์ - 1) ์ดํ์ ๊ฐ์ ๊ฐ์ง๋๋ค.
- priorities์ ๊ฐ์ฅ ์์ ์์ผ๋ฉด 0, ๋ ๋ฒ์งธ์ ์์ผ๋ฉด 1 … ๊ณผ ๊ฐ์ด ํํํฉ๋๋ค.
์ ์ถ๋ ฅ ์
priorities | location | return |
[2, 1, 3, 2] | 2 | 1 |
[1, 1, 9, 1, 1, 1] | 0 | 5 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์ ๋์จ ์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- 6๊ฐ์ ํ๋ก์ธ์ค [A, B, C, D, E, F]๊ฐ ๋๊ธฐ ํ์ ์๊ณ ์ค์๋๊ฐ [1, 1, 9, 1, 1, 1] ์ด๋ฏ๋ก [C, D, E, F, A, B] ์์ผ๋ก ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ A๋ 5๋ฒ์งธ๋ก ์คํ๋ฉ๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0;
// ์ฐ์ ์์๊ฐ ๋์ ์์๋๋ก ๊บผ๋ด๊ธฐ ์ํด ์ต๋ ํ์ผ๋ก ์ฐ์ ์์ ํ ์์ฑ
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
// ๋ชจ๋ ์ฐ์ ์์๋ฅผ Queue์ ์ถ๊ฐ
for (int num : priorities) {
// Queue ์์๋ ์ฐ์ ์์ ํฐ ์์๋๋ก ์ ๋ ฌ
queue.add(num);
}
// Queue๊ฐ ๋น์ด์์ ๋๊น์ง ๋ฐ๋ณต
while(!queue.isEmpty()) {
// ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ์ํ
for (int i = 0; i < priorities.length; i++) {
// ํ์ฌ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์ฐ์ ์์์ ๊ฐ๋ค๋ฉด
if (priorities[i] == queue.peek()) {
// ํด๋น ์ฐ์ ์์๋ฅผ Queue์์ ์ ๊ฑฐ
queue.poll();
// answer +1
answer++;
// ๋ง์ฝ i๊ฐ location์ด ๊ฐ๋ค๋ฉด
if (i == location) {
// answer ๋ฐํ
return answer;
}
}
}
}
// ์ด ์ฝ๋๋ ์คํ๋์ง ์์ง๋ง, ๋ฌธ๋ฒ์ return ํ์
return answer;
}
}
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์๊ฐํ ๋ฐฉํฅ
Queue์ priorities๋ฅผ ์ ์ฅํ๋ค.
์ฐ์ ์์๊ฐ ํฐ ์์๋๋ก ๊ฐ์ ์ญ์ ํ๋ฉด์ location์ ํด๋นํ๋ ๊ฐ์ ์์น๋ฅผ ์ฐพ๋๋ค.
'๐งฉ ํ๋ก๊ทธ๋๋จธ์ค > ๐ต ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์ฃผ์๊ฐ๊ฒฉ (4) | 2025.04.11 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (2) | 2025.04.10 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์์ (1) | 2025.04.07 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2025.04.07 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ํฐ์ผ๋ชฌ (3) | 2025.04.04 |