|
์ฝ๋ ์์ฑํ๊ธฐ
public int solution(int[] priorities, int location) {
int answer = 0;
Queue<Integer> pri = new LinkedList<>();
Queue<Integer> priLoc = new LinkedList<>();
for(int i=0; i<priorities.length; i++) {
pri.offer(priorities[i]);
priLoc.offer(i);
}
Arrays.sort(priorities);
//[1,2,2,3]
while(true) {
if(priorities[priorities.length-1-answer] == pri.peek()) {
if(location == priLoc.peek()) {
answer++;
break;
}
pri.poll();
priLoc.poll();
answer++;
} else {
pri.offer(pri.poll());
priLoc.offer(priLoc.poll());
}
}
return answer;
}
Java
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
์ค์๋๊ฐ ์ ์ผ ๋์ผ๋ฉด ๋จผ์ ๋น ์ง๊ณ ์ค์๋๊ฐ ์ ์ผ ๋์ง ์๋ค๋ฉด ๋ค์ ์ ์ผ ๋ค๋ก ๋ค์ด๊ฐ์ผ๋๊ธฐ๋๋ฌธ์ ํ๋ฅผ ์ผ๋ค
[2,1,3,2]์์ 2๋ฒ์งธ์์น ์ฆ [3]์ด ๋ช๋ฒ์งธ์ ๋น ์ง๋๋๋ฅผ ๋ฌผ์ด๋ณด๋๋ฐ
[3]์ ์ค์๋๊ฐ ์ ์ผ ๋๊ธฐ๋๋ฌธ์ 1๋ฒ์งธ๋ก ๋น ์ง๋ค
[1,1,9,1,1,1]์์ 0๋ฒ์งธ [1]์ ๋ช๋ฒ์งธ๋ก ๋น ์ง๋์ธ๋ฐ
์ฌ๊ธฐ์ 9๊ฐ ์ ์ผ ๋๊ธฐ๋๋ฌธ์ 9์์์๋ 1๋ค์ ๋ค์ ๋ค๋ก ๋น ์ ธ์ผํ๋ค
๊ทธ๋์ [9,1,1,1,1,1]๊ฐ ๋๊ณ 9๊ฐ ๋น ์ง๊ฒ ๋๋ค
[1,1,1,1,1]
๊ทธ ๋ค์์๋ ์ค์๋๊ฐ ๋ชจ๋ ๊ฐ๊ธฐ๋๋ฌธ์ ์์๋๋ก ๋น ์ง๊ฒ๋๊ณ
์ฐ๋ฆฌ๊ฐ ๋ด์ผ๋๋ 1์ 4๋ฒ์งธ์ ์๊ธฐ๋๋ฌธ์ 9๊ฐ ๋น ์ง ์นด์ดํธ์ ํฉ์ณ์ 5๊ฐ๋๋ค
์ฝ๋์์ ์ค์๋๋ฅผ ๋จผ์ ํ์ ๋ฃ์๋ค์ ์ค์๋์ ๋ํ ์์น๋ฅผ ์์์ผ๋๊ธฐ๋๋ฌธ์
์์น์ ๋ํ ํ์ธ priLoc๋ ๋ง๋ค์ด์ ์์น๋ฅผ ํ์ ๋ฃ์๋ค
๊ทธ๋ฆฌ๊ณ ์ค์๋๋ฅผ ์ค์ํ ์๋ถํฐ ๋นผ์ผ๋๊ธฐ๋๋ฌธ์ sort๋ฅผ ์ด์ฉํด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ
์ต๋๊ฐ ์ฆ lenght-1๋ถํฐ ๋ฐฐ์ด์ ์์ํด ์ค์๋๊ฐ ์ ์ผ ๋์ ๊ฐ๋ถํฐ ๋บ์ ์๊ฒ ํ๋ค
ํ์์ input์์ ์ฃผ์ด์ง ์์น์ ๊ฐ์ ์์น๊ฐ์ด poll๋๋ ์์ ์ด ๋๊ฐ๋ ์์ ์ด๊ณ
๊ทธ ์์ ์ ์ธ์ ์ฌ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฌดํ๋ฃจํ๋ฅผ ์ฃผ์๋ค
while๋ฌธ ์์์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋ priorities์์ ์ ์ผ ํฐ ์๋ถํฐ ์์ํด peek์ ์ด์ฉํด ๋น๊ต๋ฅผ ํ์๋ค
๋ฐ์ฝ ๋น๊ตํด์ ๊ฐ์๊ฒฝ์ฐ ๊ทธ ์์์ location๊ณผ ํ์ priLoc์ ๋น๊ตํด ๊ทธ๊ฒ๋ ๊ฐ์ผ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ๊ฐ์ด ๋๊ฐ๋ ์ง์ ์ด๊ธฐ๋๋ฌธ์ answer++์ ํ๊ณ break๋ฅผ ํด์ฃผ์๋ค
๊ทธ๊ฒ ์๋๊ฒฝ์ฐ ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ๊ฐ๋ณด๋ค ๋ ํฐ ์ค์๋์ ๊ฐ์ด ๋๊ฐ๋ ๊ฒ์ด๊ธฐ๋๋ฌธ์ ๊ทธ ๊ฐ์ poll๋ก ๋นผ์ฃผ๊ณ ๊ทธ ๊ฐ์๋ํ ์์น๊ฐ priLoc๋ pollํด์ฃผ์๋ค
์ค์๋์ peek์ด ๊ฐ์ง ์๋ค๋ฉด ๋งจ ๋ค๋ก ๋๊ฒจ์ผ๋๊ธฐ ๋๋ฌธ์
pollํจ๊ณผ ๋์์ offer๋ฅผ ํด์ฃผ์ด์ ๋ค์ ํ์ ๋ฃ์ด์ฃผ์๋ค