https://school.programmers.co.kr/learn/courses/30/lessons/138477
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
[ ๋ฌธ์ ์ค๋ช ]
"๋ช ์์ ์ ๋น"์ด๋ผ๋ TV ํ๋ก๊ทธ๋จ์์๋ ๋งค์ผ 1๋ช ์ ๊ฐ์๊ฐ ๋ ธ๋๋ฅผ ๋ถ๋ฅด๊ณ , ์์ฒญ์๋ค์ ๋ฌธ์ ํฌํ์๋ก ๊ฐ์์๊ฒ ์ ์๋ฅผ ๋ถ์ฌํฉ๋๋ค. ๋งค์ผ ์ถ์ฐํ ๊ฐ์์ ์ ์๊ฐ ์ง๊ธ๊น์ง ์ถ์ฐ ๊ฐ์๋ค์ ์ ์ ์ค ์์ k๋ฒ์งธ ์ด๋ด์ด๋ฉด ํด๋น ๊ฐ์์ ์ ์๋ฅผ ๋ช ์์ ์ ๋น์ด๋ผ๋ ๋ชฉ๋ก์ ์ฌ๋ ค ๊ธฐ๋ ํฉ๋๋ค. ์ฆ ํ๋ก๊ทธ๋จ ์์ ์ดํ ์ด๊ธฐ์ k์ผ๊น์ง๋ ๋ชจ๋ ์ถ์ฐ ๊ฐ์์ ์ ์๊ฐ ๋ช ์์ ์ ๋น์ ์ค๋ฅด๊ฒ ๋ฉ๋๋ค. k์ผ ๋ค์๋ถํฐ๋ ์ถ์ฐ ๊ฐ์์ ์ ์๊ฐ ๊ธฐ์กด์ ๋ช ์์ ์ ๋น ๋ชฉ๋ก์ k๋ฒ์งธ ์์์ ๊ฐ์ ์ ์๋ณด๋ค ๋ ๋์ผ๋ฉด, ์ถ์ฐ ๊ฐ์์ ์ ์๊ฐ ๋ช ์์ ์ ๋น์ ์ค๋ฅด๊ฒ ๋๊ณ ๊ธฐ์กด์ k๋ฒ์งธ ์์์ ์ ์๋ ๋ช ์์ ์ ๋น์์ ๋ด๋ ค์ค๊ฒ ๋ฉ๋๋ค.
์ด ํ๋ก๊ทธ๋จ์์๋ ๋งค์ผ "๋ช ์์ ์ ๋น"์ ์ตํ์ ์ ์๋ฅผ ๋ฐํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, k = 3์ด๊ณ , 7์ผ ๋์ ์งํ๋ ๊ฐ์์ ์ ์๊ฐ [10, 100, 20, 150, 1, 100, 200]์ด๋ผ๋ฉด, ๋ช ์์ ์ ๋น์์ ๋ฐํ๋ ์ ์๋ ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด [10, 10, 10, 20, 20, 100, 100]์ ๋๋ค.
๋ช ์์ ์ ๋น ๋ชฉ๋ก์ ์ ์์ ๊ฐ์ k, 1์ผ๋ถํฐ ๋ง์ง๋ง ๋ ๊น์ง ์ถ์ฐํ ๊ฐ์๋ค์ ์ ์์ธ score๊ฐ ์ฃผ์ด์ก์ ๋, ๋งค์ผ ๋ฐํ๋ ๋ช ์์ ์ ๋น์ ์ตํ์ ์ ์๋ฅผ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.

[ ํ์ด๊ณผ์ ]
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
ArrayList<Integer> list = new ArrayList<>();
//์ ์๋ฅผ ์ ๋ ฌํด์ค list์ ์ธ
for (int i=0; i<score.length; i++) {
list.add(score[i]); //list์ ์ ์ ๋ด๊ธฐ
Collections.sort(list); //list์ค๋ฆ์ฐจ์ ์ ๋ ฌ
if (list.size()<=k) { //listํฌ๊ธฐ๊ฐ k๋ฒ์ ์์ ์๋ค๋ฉด
answer[i] = list.get(0); //list์ ์ฒซ๋ฒ์งธ ์์ ๋ฐํ
}
else { //listํฌ๊ธฐ๊ฐ k๋ฒ์๋ฅผ ๋๋๋ค๋ฉด
answer[i] = list.get(list.size()-k);
//list์ ๋์์ k๋ฒ์งธ ์์ ๋ฐํ
}
}
return answer;
}
}
[ ๋ค๋ฅธํ์ด ]
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
//์ฐ์ ์์ํ ์ ์ธ
//์ฐ์ ์์ํ = ๊ฐ์ฅ ์์๊ฐ์ด ์ฐ์ ์์๊ฐ ๋์ ํํ
for(int i = 0; i < score.length; i++) {
priorityQueue.add(score[i]);
if (priorityQueue.size() > k) { //ํ์ ์ฌ์ด์ฆ๊ฐ k๋ณด๋ค ์ปค์ง๋ฉด
priorityQueue.poll(); //์ฐ์ ์์ ๊ฐ์ฅ ๋์ ๊ฐ ์ ๊ฑฐ(๊ฐ์ฅ ์์๊ฐ ์ ๊ฑฐ)
}
answer[i] = priorityQueue.peek();
//์ฐ์ ์์ ๊ฐ์ฅ ๋์ ๊ฐ ๋ฐํ(๊ฐ์ฅ ์์๊ฐ ๋ฐํ)
}
return answer;
}
}
[ ๋ฌธ๋ฒ์ ๋ฆฌ ]
1. PriorityQueue
์ผ๋ฐ์ ์ธ ํ์๋ ๋ฌ๋ฆฌ ์ฐ์ ์์๊ฐ ๋์ ์์(๊ฐ์ฅ ์์๊ฐ)๊ฐ ๋จผ์ ๋ฐํ๋จ
.poll()
๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ์์ ์ ๊ฑฐ
.peek()
๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ์์ ๋ฐํ
'๐ฅ Coding Test > ์ค๋ต๋ ธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์ ๋ฌธ] ์ด์ง์ ๋ํ๊ธฐ (0) | 2023.08.16 |
|---|---|
| [์ ๋ฌธ] ์จ์ด์๋ ์ซ์์ ๋ง์ (2) (0) | 2023.08.14 |
| [์ ๋ฌธ] ์ง๋ฃ์์ ์ ํ๊ธฐ (0) | 2023.08.04 |
| [์ ๋ฌธ] ์บ๋ฆญํฐ์ ์ขํ (0) | 2023.08.04 |
| [์ ๋ฌธ] ์ธ๊ณ์ด ์ฌ์ (0) | 2023.08.04 |