-
728x90
모든 스코빌 지수가 처음부터 K보다 클 땐
0을 리턴해야 될 것 같은데,
이 처리를 안 해도 통과됐당.. ㄷㄷ[ 풀이 방법 ]
- 우선순위 큐를 사용해서, queue를 스코빌 지수 순으로 가지고 있는다.
- 스코빌 지수를 섞을 수 있는 경우 : queue.size >= 2 계산을 한다.
- 모든 지수가 K이상이면, answer을 리턴한다.
- while문 종료 될 때까지 리턴할 수 없다면 만들 수 없으므로 -1을 리턴한다.
[ 전체 코드 ]
import java.util.PriorityQueue; class Solution { public int solution(int[] scoville, int K) { PriorityQueue<Integer> queue = new PriorityQueue<Integer>(); for (int n : scoville) queue.offer(n); int answer = 0; while (queue.size() >= 2) { int a = queue.poll(); int b = queue.poll(); queue.offer(a + b * 2); answer++; if (queue.peek() >= K) return answer; } return -1; } }
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level2] 프로그래머스 - 행렬 테두리 회전하기(JAVA) (0) 2021.09.19 [level2] 프로그래머스 - 짝지어 제거하기(JAVA) (0) 2021.09.18 [level3] 프로그래머스 - 베스트앨범(JAVA) (0) 2021.09.17 [level2] 프로그래머스 - 프린터(JAVA) (0) 2021.09.17 [level3] 프로그래머스 - 가장 먼 노드(JAVA) (0) 2021.09.17 댓글