[Java, 자바] 프로그래머스 귤 고르기알고리즘/프로그래머스2024. 3. 6. 19:05
Table of Contents
728x90
프로그래머스
👉🏻 https://school.programmers.co.kr/learn/courses/30/lessons/138476
# 난이도 : LV.2
문제내용
제한사항
입출력 예
풀이방법
이번 문제는 우선순위 큐와 Map을 통해서 해결하였습니다 :)
Map을 통해 <귤번호, 개수> 형식으로 데이터를 넣어줍니다.
(다른 문제에서 언급했던 getOrDefault 메서드 사용하기 ! ⭐️잊지마세요)
종류의 수만 구하면 되는 문제이기 때문에 내림차순으로 생성해 놓았던 우선순위 큐에 Map에 누적해 놓은 누적 개수를 모두 저장해줍니다 !
마지막으로 반복문은 k가 0보다 클 때만 실행되고 반복문 안에서 Q에 들어있는 값을 확인한 뒤 k보다 큰 수일 경우 answer을 증가하여 반복문을 탈출해주고 Q의 값이 k보다 작을 경우 k의 값에서 Q의 값을 빼준 이후 다음 반복문을 진행해야합니다.
복잡하지만 생각보다 복잡하지 않은 문제인 것 같아요 ! 다들 화이팅 !
코드
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
PriorityQueue<Integer> Q = new PriorityQueue<>(Comparator.reverseOrder());
HashMap<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < tangerine.length; i++) map.put(tangerine[i], map.getOrDefault(tangerine[i], 0) + 1);
for(int key : map.keySet()) Q.offer(map.get(key));
while (k > 0){
if(Q.peek() > k){
answer++;
break;
} else {
k -= Q.poll();
answer++;
}
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Java, 자바] 프로그래머스 타겟 넘버 (0) | 2024.03.18 |
---|---|
[Java, 자바] 프로그래머스 주식가격 문제 (0) | 2024.03.18 |
[Java, 자바] 프로그래머스 게임 맵 최단거리(BFS) (2) | 2024.03.06 |
@차나니 :: 차나니의 개발일지
개발의 모든 것 !
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!