https://school.programmers.co.kr/learn/courses/30/lessons/138476
๋ฌธ์
๊ฒฝํ๋ ๊ณผ์์์์ ๊ทค์ ์ํํ์ต๋๋ค. ๊ฒฝํ๋ ์ํํ ๊ทค ์ค 'k'๊ฐ๋ฅผ ๊ณจ๋ผ ์์ ํ๋์ ๋ด์ ํ๋งคํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ํํ ๊ทค์ ํฌ๊ธฐ๊ฐ ์ผ์ ํ์ง ์์ ๋ณด๊ธฐ์ ์ข์ง ์๋ค๊ณ ์๊ฐํ ๊ฒฝํ๋ ๊ทค์ ํฌ๊ธฐ๋ณ๋ก ๋ถ๋ฅํ์ ๋ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ์๋ฅผ ์ต์ํํ๊ณ ์ถ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฒฝํ๊ฐ ์ํํ ๊ทค 8๊ฐ์ ํฌ๊ธฐ๊ฐ [1, 3, 2, 5, 4, 5, 2, 3] ์ด๋ผ๊ณ ํฉ์๋ค. ๊ฒฝํ๊ฐ ๊ทค 6๊ฐ๋ฅผ ํ๋งคํ๊ณ ์ถ๋ค๋ฉด, ํฌ๊ธฐ๊ฐ 1, 4์ธ ๊ทค์ ์ ์ธํ ์ฌ์ฏ ๊ฐ์ ๊ทค์ ์์์ ๋ด์ผ๋ฉด, ๊ทค์ ํฌ๊ธฐ์ ์ข ๋ฅ๊ฐ 2, 3, 5๋ก ์ด 3๊ฐ์ง๊ฐ ๋๋ฉฐ ์ด๋๊ฐ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ๊ฐ ์ต์์ผ ๋์ ๋๋ค.
๊ฒฝํ๊ฐ ํ ์์์ ๋ด์ผ๋ ค๋ ๊ทค์ ๊ฐ์ k์ ๊ทค์ ํฌ๊ธฐ๋ฅผ ๋ด์ ๋ฐฐ์ด tangerine์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๊ฒฝํ๊ฐ ๊ทค k๊ฐ๋ฅผ ๊ณ ๋ฅผ ๋ ํฌ๊ธฐ๊ฐ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- 1 ≤ k ≤ tangerine์ ๊ธธ์ด ≤ 100,000
- 1 ≤ tangerine์ ์์ ≤ 10,000,000
ํ์ด
์ฝ๋
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int t : tangerine) {
// if(!map.containsKey(t)) {
// map.put(t, 1);
// } else {
// int value = map.get(t);
// map.put(t, value + 1);
// }
map.put(t, map.getOrDefault(t, 0) + 1);
}
List<Integer> valueList = new ArrayList<>(map.values());
Collections.sort(valueList, (o1, o2) -> o2 - o1); //๋ด๋ฆผ ์ฐจ์ ์ ๋ ฌ
int answer = 0; //์ข
๋ฅ ์
int count = 0;
for(int value : valueList) {
count += value;
answer++;
if(count >= k) break;
}
return answer;
}
}
๊ฒฐ๊ณผ
๋ฐฐ์ด์
- Map ๋ฉ์๋ - getOrDefault(key, ๋ํดํธ ๊ฐ)
- key๊ฐ์ด ์กด์ฌํ๋ฉด value ๋ฐํ, ์์ผ๋ฉด ๋ํดํธ ๊ฐ ๋ฐํ
- HashMap ์ ๋ ฌ
- key๋ก ์ ๋ ฌ : List<Integer> keyList = new ArrayList<>(map.keySet());
- value๋ก ์ ๋ ฌ : List<Integer> valueList = new ArrayList<>(map.values());
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ๋ณด์ ์ผํ (0) | 2024.01.09 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์กฐ์ด์คํฑ (0) | 2023.10.24 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ ํ ํฉ ๊ฐ๊ฒ ๋ง๋ค๊ธฐ (0) | 2023.10.19 |
ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ฅ ํฐ ์ (0) | 2023.09.07 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ (0) | 2023.08.30 |