📌 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌 풀이
- 알고리즘 보다는 문제의 제약조건 내용대로 구현 하는 문제
- 고르기로 한 개수인 k개 만큼 고르기 위해 필요한 각 귤의 개수를 알아야 한다.
- ➡️ 이를 위해 Map 을 사용해야 함
- Map을 만든 후에는 key-value 에서 value 값에 따라 내림차순 정렬(❗️가장 개수가 많은 귤부터 차감해야 함)
- 내림차순으로 차감하여 귤을 k개 만큼 다 골랐을 시점이 서로 다른 귤의 종류가 최소일 때이다.
📌 코드
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
HashMap<Integer,Integer> tangerineMap =new HashMap<>();
//귤 종류의 개수 대로 key-value 형태로 map에 넣어줌
for (int t : tangerine) {
tangerineMap.put(t, tangerineMap.getOrDefault(t, 0) + 1);
}
//key만 list에 담아준 후
List<Integer> list = new ArrayList<>(tangerineMap.keySet());
//value 값에 따라 내림차순 정렬
list.sort((o1, o2) -> tangerineMap.get(o2)-tangerineMap.get(o1));
for(Integer key:list){
k -=tangerineMap.get(key);
answer++;
if(k<=0){
break;
}
}
return answer;
}
}
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Lv2][Java] 멀리뛰기 (0) | 2023.02.18 |
---|---|
[프로그래머스][Java] 삼총사 (0) | 2023.02.16 |
[프로그래머스][Java] 기사단원의 무기 (0) | 2023.02.05 |
[프로그래머스][Java] 명예의 전당 (1) (0) | 2023.02.04 |
[프로그래머스] 문자열 나누기 - Java (0) | 2023.01.31 |