2023. 2. 23. 13:21ใ์ฝ๋ฉํ ์คํธ ์ฐ์ต/ํ๋ก๊ทธ๋๋จธ์ค_2023
๋ฌธ์ ์ค๋ช
"๋ช ์์ ์ ๋น"์ด๋ผ๋ 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 ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ- 3 ≤ k ≤ 100
- 7 ≤ score์ ๊ธธ์ด ≤ 1,000
- 0 ≤ score[i] ≤ 2,000
์ ์ถ๋ ฅ ์
3 | [10, 100, 20, 150, 1, 100, 200] | [10, 10, 10, 20, 20, 100, 100] |
4 | [0, 300, 40, 300, 20, 70, 150, 50, 500, 1000] | [0, 0, 0, 0, 20, 40, 70, 70, 150, 300] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ์๋์ ๊ฐ์ด, [0, 0, 0, 0, 20, 40, 70, 70, 150, 300]์ returnํฉ๋๋ค.
๋์ ํ์ด
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
ArrayList<Integer> arrayList = new ArrayList<>();
int min = score[0];
for (int i = 0; i< score.length; i++)
{
if (i < k) {
arrayList.add(score[i]);
min = Math.min(min, score[i]);
answer[i] = min;
}else {
if (min < score[i]) {
arrayList.add(score[i]);
arrayList.remove(0);
arrayList.sort(Integer::compareTo);
}
min = arrayList.get(0);
answer[i] = arrayList.get(0);
}
arrayList.sort(Integer::compareTo);
}
return answer;
}
๋ด๊ฐ ํผ ๋ฐฉ์์ ์ข ๋ณต์กํ๊ฒ ? ํผ ๊ฒ ๊ฐ๊ธดํ๋ฐ.. ์ผ๋จ
๋ช ์์ ์ ๋น ๋ชฉ๋ก์ ์ ์์ ๊ฐ์ k ๊น์ง๋ arraylist์ ๋ด์์ฃผ๊ณ , ๊ทธ ์ค ์ต์๊ฐ์ ๊ตฌํด์ answer ๋ฐฐ์ด์ ๋ด์์ค๋ค.
๊ทธ๋ฆฌ๊ณ k๊ฐ ์ด์์ผ๋ก ๋์ด๊ฐ๋ฉด ์ด์ score์ ๊ฐ์ด min๋ณด๋ค ํฌ๋ฉด arraylist๋ฅผ ์ ๋ ฌํด์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ ๊ฑฐํ๊ณ , score ๊ฐ์ ๋ฃ์ด์ค๋ค.
๋ญ๊ฐ ์ฝ๋ ๋ ์ ๋ฆฌํ ์ ์์ ๊ฒ ๊ฐ๊ธดํด์ ๋์ค์ ์์ ํด๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค. ์ด๊ฑด ๊ทธ๋ฅ ๋ต๋ง ๋์ค๊ฒํ ์ฝ๋๊ฐ์ ๊ธฐ๋ถ...๐ฎ
๋ค๋ฅธ ์ฌ๋ ํ์ด
public int[] otherSolution(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) {
priorityQueue.poll();
}
answer[i] = priorityQueue.peek();
}
return answer;
}
์.. ์๋ฃ ๊ตฌ์กฐ ๋ ๊ณต๋ถํด์ผ๊ฒ ๋ค๊ณ ์๊ฐ์ด ๋๋ ์ฝ๋๋ค..
priorityQueue๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ ๊ฒ ์ฝ๊ฒ ํด๊ฒฐ๋๋๋ฐ... ๋๋ ์์ฒญ ๋ณต์กํ๊ฒ ๋ง๋ ๊ฒ์ด๋ค..ใ ใ ใ ใ ใ
๋ฐ์ฑํ๊ฒ ๋๋๊ตฌ๋.. ์๋ฐ ๊ณต๋ถ๋ฅผ ์ํํ ํ๋๊น ์ด๋ฌ๋๊ตฌ๋... ์ค๋์ด๋ผ๋ ์์์ผ๋๊น ๋นจ๋ฆฌ ์ ๋ฆฌํด์ ์ด์ ์ด๊ฑธ ์ฌ์ฉํ๋๋ก ํ๋ฉด ๋๋๊น ใ ใ ใ ๊ด์ฐฎ์!!
๊น๋จน์ง ์๊ฒ ์ค๋ TIL ์ฃผ์ ๋ก priorityQueue๋ฅผ ๊ณต๋ถํด์ผ๊ฒ ๋ค..!!
'์ฝ๋ฉํ ์คํธ ์ฐ์ต > ํ๋ก๊ทธ๋๋จธ์ค_2023' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] Lv2. ๊ทค ๊ณ ๋ฅด๊ธฐ (0) | 2023.03.07 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] Lv1. ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ (0) | 2023.03.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] Lv2. ์กฐ๊ฑด์ ๋ง๋ ๋์์ ์ ์ ๋ฆฌ์คํธ ์ถ๋ ฅํ๊ธฐ (0) | 2023.02.23 |
[ํ๋ก๊ทธ๋๋จธ์ค] Lv3. ๋์ฌ ๊ธฐ๋ก์ด ์กด์ฌํ๋ ์๋์ฐจ ๋ฆฌ์คํธ ๊ตฌํ๊ธฐ (0) | 2023.02.22 |
[ํ๋ก๊ทธ๋๋จธ์ค] Lv1. ๊ณผ์ผ ์ฅ์ (0) | 2023.02.22 |