링크 : https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
1. 크기가 각자 다른 귤(tangerine 배열)을 카운팅하고, 이를 맵에 저장한다.
2. 맵의 value들을 리스트에 담고 내림차순 정렬을 한다.
3. 수확해야 하는 귤의 수(k)에서 리스트의 값을 차례로 빼주며 answer를 카운팅한다.
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer, Integer> tangerineMap = new HashMap<>();
for(int i : tangerine) {
if(tangerineMap.get(i) == null) {
tangerineMap.put(i, 1);
} else {
tangerineMap.put(i, tangerineMap.get(i) + 1);
}
}
ArrayList<Integer> tangerineList = new ArrayList<>();
for(Integer value : tangerineMap.values()) {
tangerineList.add(value);
}
Collections.sort(tangerineList, Collections.reverseOrder()); // 내림차순 정렬
for(int i=0; i< tangerineList.size(); i++) {
k -= tangerineList.get(i);
answer++;
if(k <= 0) {
break;
}
}
return answer;
}
}'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 택배 상자(Java), 스택 (2) | 2024.05.29 |
|---|---|
| [프로그래머스] 롤케이크 자르기(Java) (0) | 2024.05.21 |
| [프로그래머스] 연속된 부분 수열의 합(Java), 투포인터 (1) | 2024.04.24 |
| [프로그래머스] 마법의 엘리베이터(Java) (0) | 2024.04.03 |
| [프로그래머스] 광물 캐기(Java), 그리디 알고리즘 (1) | 2024.03.27 |