728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]

📍 [코드]
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int cnt = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>(); // 자동 오름차순 (Min Heap)
for (int s : scoville) pq.add(s);
while(pq.size() > 1 && pq.peek() < K){
int first = pq.poll();
int second = pq.poll();
int newSco = first + (second * 2);
pq.add(newSco);
cnt++;
}
return pq.peek() < K ? -1 : cnt;
}
}
💡 접근법
우선순위 큐를 활용하여 자동으로 오름차순으로 정렬되도록 한다.- 배열의 값 큐에 넣어 정렬하고
- 큐가 비어있지 않고, 제일 위의 값이 K보다 작을 때 반복문을 반복하며 횟수를 측정한다.
- 큐의 제일 처음 값을 삭제하며
first에 저장하고, - 삭제한 후의 제일 처음 값을 삭제하며
second에 저장 - 이후, 문제에 나온 조건대로 2를 곱하고 더하여 새로운 값 생성
- 새로운 값을 큐에 넣어 자동으로 정렬되도록 한다.
- 큐의 제일 처음 값을 삭제하며
- 반복문이 끝난 후, 모든 값이 K이상이어야 하므로 제일 첫 값이 K보다 작다면 -1 반환
✅ 우선순위 큐 사용
✅ peek()→ 값 꺼내지 ❌ 보기만 / poll() → 값 꺼냄 ⭕️
💬 마무리
우선순위 큐가 자동으로 정렬을 해줘서 편한 것 같다.
이 문제는 우선순위 큐를 안다면 크게 어렵지 않은 문제인 것 같다.
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
| [프로그래머스|JAVA] 하샤드 수 | 🌐 아스키코드 활용 -> 형변환 (5) | 2025.08.25 |
|---|---|
| [프로그래머스|JAVA] 콜라츠 추측 |💡 타입 오버플로우 문제 해결 (long) (0) | 2025.08.25 |
| [프로그래머스|JAVA] 게임 맵 최단거리 | ↔️ BFS 활용 | Queue 활용 (5) | 2025.08.25 |
| [프로그래머스|JAVA] 타겟 넘버 | ↕️ DFS 활용 | 간결 코드 (4) | 2025.08.24 |
| [프로그래머스|JAVA] 네트워크 | ↕️ DFS (깊이 우선 탐색) | 재귀적 방식 (0) | 2025.08.24 |
