2022.05.17 ใLv.2 ํ๋ฆฐํฐใ
๋ฌธ์ ์ค๋ช
์ผ๋ฐ์ ์ธ ํ๋ฆฐํฐ๋ ์ธ์ ์์ฒญ์ด ๋ค์ด์จ ์์๋๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฌธ์๊ฐ ๋์ค์ ์ธ์๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ค์๋๊ฐ ๋์ ๋ฌธ์๋ฅผ ๋จผ์ ์ธ์ํ๋ ํ๋ฆฐํฐ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ์ด ์๋กญ๊ฒ ๊ฐ๋ฐํ ํ๋ฆฐํฐ๋ ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ธ์ ์์ ์ ์ํํฉ๋๋ค.
1. ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์(J)๋ฅผ ๋๊ธฐ๋ชฉ๋ก์์ ๊บผ๋
๋๋ค.
2. ๋๋จธ์ง ์ธ์ ๋๊ธฐ๋ชฉ๋ก์์ J๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ํ ๊ฐ๋ผ๋ ์กด์ฌํ๋ฉด J๋ฅผ ๋๊ธฐ๋ชฉ๋ก์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฃ์ต๋๋ค.
3. ๊ทธ๋ ์ง ์์ผ๋ฉด J๋ฅผ ์ธ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, 4๊ฐ์ ๋ฌธ์(A, B, C, D)๊ฐ ์์๋๋ก ์ธ์ ๋๊ธฐ๋ชฉ๋ก์ ์๊ณ ์ค์๋๊ฐ 2 1 3 2 ๋ผ๋ฉด C D A B ์์ผ๋ก ์ธ์ํ๊ฒ ๋ฉ๋๋ค.
๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง ์๊ณ ์ถ์ต๋๋ค. ์์ ์์์ C๋ 1๋ฒ์งธ๋ก, A๋ 3๋ฒ์งธ๋ก ์ธ์๋ฉ๋๋ค.
ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์๋ ๋ฌธ์์ ์ค์๋๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด priorities์ ๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ํ์ฌ ๋๊ธฐ๋ชฉ๋ก์ ์ด๋ค ์์น์ ์๋์ง๋ฅผ ์๋ ค์ฃผ๋ location์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ด๊ฐ ์ธ์๋ฅผ ์์ฒญํ ๋ฌธ์๊ฐ ๋ช ๋ฒ์งธ๋ก ์ธ์๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
์ค์๋๋ ์ซ์๊ฐ ํด์๋ก ํฌ๋ค.
์ผ๋จ 3๊ฐ์ J๋ฌธ์์์ ๋ณด์์ ๋ ๋๊ฐ ๋ด๋ Queue๋ฅผ ์ด์ฉํด ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
Queue์ ์๋ฃ๊ตฌ์กฐ๋ ADT ์ด๋ฏ๋ก ๋ณดํต LinkedList ํด๋์ค๋ก ๊ตฌํํ์ง๋ง, ์ฌ๊ธฐ์ ํ๋ฅผ ์ง์ ์ ์ผ๋ก ์ด์ฉํ๊ธฐ๋ณด๋ค ํ๋ฅผ ๊ตฌํํ ์ฐ์ ์์ ํ ํด๋์ค PriorityQueue๋ฅผ ์ด์ฉํด ํ์ด๋ณด๊ฒ ๋ค.
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
1. ์์ฑ์๋ compartor๋ฅผ ์ธ์๋ก ๋ฐ์ผ๋ฏ๋ก ์ฌ๊ธฐ์๋ Collections๋ฅผ ์ด์ฉํด ์ฐ์ ์์ ์ซ์๊ฐ ํฐ ์์ด๋ฏ๋ก ๋ฐ๋๋ก ์ ๋ ฌํ๋ค.
2. ํ์๋ค๊ฐ ํ๋กํผํฐ ๋ฐฐ์ด์ ๋ฃ์ด์คฌ๋ค.
for (int i : priorities) {
priorityQueue.add(i);
}
3. ํ์์ ์ฐ์ ์์๊ฐ ๋์ ๊ฐ๊ณผ ์ธ์ ๋ฐฐ์ด ๊ฐ๊ณผ ๋น๊ตํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๊ณ ์ด ๋ ๋ต ์ธ๋ฑ์ค๋ฅผ 1์ฉ ์ฆ๊ฐ์ํจ๋ค.
4. ์ฐจ๋ก๋๋ก ํ์์ ์ฐ์ ์์ ๊ฐ์ ๋นผ๋ธ๋ค.
5. ์ธ๋ฑ์ค ์ธ์์ ๋ฐ๋ณต ์ธ๋ฑ์ค๊ฐ ๊ฐ์์ง ๋๊ฐ ์ ๋ต์ด๋ค.
public int solution(int[] priorities, int location) {
int answer = 0;
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());
for (int i : priorities) {
priorityQueue.add(i);
}
while (!priorityQueue.isEmpty()) {
for (int i = 0; i < priorities.length; i++) {
if (priorityQueue.peek() == priorities[i]) {
priorityQueue.poll();
answer++;
if (location == i) {
return answer;
}
}
}
}
return answer;
}
๊ฒฐ๊ตญ ํต์ฌ์ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ๋ถํฐ ์ฐจ๋ก๋๋ก ์ธ๋ฑ์ค ๋น๊ต๋ฅผ ํ๋ฉฐ ๊ฐ์ง ์์ ๋ ์ธ๋ฑ์ค ์์น, ๊ฐ์ ๋ ๊ทธ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ฉฐ ์ ๋ต์ ๋์ถํ ์ ์๊ฒ ๋๋ค.
๋ฌธ์ ์กฐ๊ฑด ์์ฒด์์ ๋ง์ง๋ง์ ๋ฃ์ ๊ฑด ์ ์ผ ๋ง์ง๋ง์ ๋์ค๊ธฐ ๋๋ฌธ์ ๋น์ฐํ ํ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๊ณ , ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๊ธฐ ๋๋ฌธ์ ํ๋ฅผ ๊ตฌํํ ์์ ํด๋์ค๋ฅผ ์ด์ฉํ ๊ฒ์ด๋ค.