1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42626
2. 접근방법
코딩 테스트 연습 heap 1번문제
Priority Queue 를 쓰면 쉽게 해결 가능하다.
pq를 이용해 오름차순에서 2개를 꺼내고
이 조건에 맞춰 다시 넣어주고
만약 pq에서 처음으로 꺼낸 수가
k를 넘어가면 끝내면 된다.
3. 자바 코드
import java.util.PriorityQueue;
public class P42626더맵게 {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
for(int i : scoville)
pq.add(i);
boolean flag = true;
while(!pq.isEmpty()) {
int f = pq.poll();
if(f >=K)
break;
if(pq.isEmpty()) {
flag = false;
break;
}
int s = pq.poll();
pq.add(f+s*2);
answer++;
}
return flag ? answer : -1;
}
}
4. 마치며
pq 사용에 가장 기본적인 문제였다.
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 42628 이중우선순위큐 (2) | 2021.08.31 |
---|---|
[프로그래머스] 42627 디스크 컨트롤러 (0) | 2021.08.31 |
[프로그래머스] 84021 퍼즐 조각 채우기 ( 위클리 챌린지 3주차 ) (2) | 2021.08.19 |
[프로그래머스] 67258 보석쇼핑 ( 2020 카카오 인턴십 ) (0) | 2021.08.17 |
[프로그래머스] 64063 호텔방배정 (2019 카카오 인턴십) (0) | 2021.08.11 |