๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/138477
"๋ช
์์ ์ ๋น"์ด๋ผ๋ TV ํ๋ก๊ทธ๋จ์์๋ ๋งค์ผ 1๋ช
์ ๊ฐ์๊ฐ ๋
ธ๋๋ฅผ ๋ถ๋ฅด๊ณ , ์์ฒญ์๋ค์ ๋ฌธ์ ํฌํ์๋ก ๊ฐ์์๊ฒ ์ ์๋ฅผ ๋ถ์ฌํฉ๋๋ค. ๋งค์ผ ์ถ์ฐํ ๊ฐ์์ ์ ์๊ฐ ์ง๊ธ๊น์ง ์ถ์ฐ ๊ฐ์๋ค์ ์ ์ ์ค ์์ k๋ฒ์งธ ์ด๋ด์ด๋ฉด ํด๋น ๊ฐ์์ ์ ์๋ฅผ ๋ช
์์ ์ ๋น์ด๋ผ๋ ๋ชฉ๋ก์ ์ฌ๋ ค ๊ธฐ๋
ํฉ๋๋ค. ์ฆ ํ๋ก๊ทธ๋จ ์์ ์ดํ ์ด๊ธฐ์ k์ผ๊น์ง๋ ๋ชจ๋ ์ถ์ฐ ๊ฐ์์ ์ ์๊ฐ ๋ช
์์ ์ ๋น์ ์ค๋ฅด๊ฒ ๋ฉ๋๋ค. k์ผ ๋ค์๋ถํฐ๋ ์ถ์ฐ ๊ฐ์์ ์ ์๊ฐ ๊ธฐ์กด์ ๋ช
์์ ์ ๋น ๋ชฉ๋ก์ k๋ฒ์งธ ์์์ ๊ฐ์ ์ ์๋ณด๋ค ๋ ๋์ผ๋ฉด, ์ถ์ฐ ๊ฐ์์ ์ ์๊ฐ ๋ช
์์ ์ ๋น์ ์ค๋ฅด๊ฒ ๋๊ณ ๊ธฐ์กด์ k๋ฒ์งธ ์์์ ์ ์๋ ๋ช
์์ ์ ๋น์์ ๋ด๋ ค์ค๊ฒ ๋ฉ๋๋ค.
์ด ํ๋ก๊ทธ๋จ์์๋ ๋งค์ผ "๋ช ์์ ์ ๋น"์ ์ตํ์ ์ ์๋ฅผ ๋ฐํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, k = 3์ด๊ณ , 7์ผ ๋์ ์งํ๋ ๊ฐ์์ ์ ์๊ฐ [10, 100, 20, 150, 1, 100, 200]์ด๋ผ๋ฉด, ๋ช ์์ ์ ๋น์์ ๋ฐํ๋ ์ ์๋ ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด [10, 10, 10, 20, 20, 100, 100]์ ๋๋ค.
์ผ์ฐจ | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
score | 10 | 100 | 20 | 150 | 1 | 100 | 200 |
๋ช
์์ ์ ๋น (k = 3) |
10 | 100 10 |
100 20 10 |
150 100 20 |
150 100 20 |
150 100 100 |
200 150 100 |
๋ฐํ ์ ์ | 10 | 10 | 10 | 20 | 20 | 100 | 100 |
๋ช ์์ ์ ๋น ๋ชฉ๋ก์ ์ ์์ ๊ฐ์ k, 1์ผ๋ถํฐ ๋ง์ง๋ง ๋ ๊น์ง ์ถ์ฐํ ๊ฐ์๋ค์ ์ ์์ธ score๊ฐ ์ฃผ์ด์ก์ ๋, ๋งค์ผ ๋ฐํ๋ ๋ช ์์ ์ ๋น์ ์ตํ์ ์ ์๋ฅผ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 3 ≤ k ≤ 100
- 7 ≤ score์ ๊ธธ์ด ≤ 1,000
- 0 ≤ score[i] ≤ 2,000
์ ์ถ๋ ฅ ์
k | score | result |
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ํฉ๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
import java.util.*;
class Solution {
public int[] solution(int k, int[] score) {
int[] answer = new int[score.length];
ArrayList<Integer> list = new ArrayList<>(k);
for (int i = 0; i < score.length; i++) {
list.add(score[i]);
Collections.sort(list);
if (list.size() > k) {
list.remove(0);
}
answer[i] = list.get(0);
}
return answer;
}
}
์ฝ๋ ์ค๋ช
- int[ ] answer = new int[socre.length] : ๊ธธ์ด๊ฐ score.length์ธ ๋ฐฐ์ด answer๋ฅผ ์์ฑํ๋ค.
- ArrayList<Integer> list = new ArrayList<>( ) : ์ ์ํ ํ์ ์ ์ ์ฅํ๋ ArrayList list๋ฅผ ์์ฑํ๋ค.
- for (int i = 0; i < score.length; i++) { } : for๋ฌธ์ ์ฌ์ฉํด์ i๊ฐ 0๋ถํฐ score.lenth-1๊น์ง ๋ฐ๋ณตํ๋ค.
- list.add(score[i]) : list์ score[i] ๊ฐ์ ์ถ๊ฐํ๋ค.
- Collections.sort(list) : list๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
- if (list.size( ) > k) { list.remove(0) } : if๋ฌธ์ ์ฌ์ฉํด์ list์ ๊ธธ์ด๊ฐ k๋ณด๋ค ํฌ๋ค๋ฉด list์ ์ต์๊ฐ์ ์ญ์ ํ๋ค.
- answer[i] = list.get(0) : answer์ i๋ฒ์งธ ์ธ๋ฑ์ค์ list์ ์ต์๊ฐ์ ์ ์ฅํ๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค > ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค_์นด๋ ๋ญ์น(Java) (4) | 2024.12.16 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค_2016๋ (1) | 2024.12.13 |
ํ๋ก๊ทธ๋๋จธ์ค_์ฝ๋ผ ๋ฌธ์ (0) | 2024.12.11 |
ํ๋ก๊ทธ๋๋จธ์ค_ํธ๋ ํ์ดํธ ๋ํ (0) | 2024.12.10 |
ํ๋ก๊ทธ๋๋จธ์ค_๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ๊ธ์ (0) | 2024.12.09 |