요르딩딩
프로그래머스 : 더 맵게 (우선순위 큐) 본문
728x90
반응형
이번문제는 비교적 쉬운 문제였다.
다만 런타임에러가 발생하여, 몇가지 문제점들을 확인 후 완료할 수 있었다.
처음에는 리스트를 사용하여 매번 정렬을 하였다가 우선순위 큐를 사용하도록 수정했다.
그리고 while문의 종료조건만 잘 작성한다면 보다 쉽게 해결할 수 있는 문제이다.
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
Queue<Integer> q = new PriorityQueue();
for(int i =0; i < scoville.length; i++) {
q.add(scoville[i]);
}
int first = -1; //무조건 1번 시작
int count = 0;
while (first < K) { // 가장작은게 K보다 크면 전체가 다 K보다 크다고 본다.
if(q.size() <2 && first < K) { // 만들 수 없는 경우
return -1;
}
int f = q.poll();
int s = q.poll();
int tmp = f + (s * 2); // 지수계산
q.offer(tmp);
first = q.peek();// 첫번째값 갱신
count++;
}
answer = count ==0 ? -1 : count;
return answer;
}
}
728x90
반응형
'[코딩테스트] > 문제풀이' 카테고리의 다른 글
프로그래머스 : 폰캣몬 (Set) (0) | 2022.05.16 |
---|---|
프로그래머스 : 괄호변환 (String.CharAt(), 재귀) (0) | 2022.05.13 |
프로그래머스 : [1차]비밀지도 (2진수, 비트연산) (0) | 2022.05.03 |
프로그래머스 : 실패율 (0) | 2022.04.25 |
프로그래머스 : 방금그곡 (0) | 2022.04.20 |
Comments