요르딩딩

프로그래머스 : 더 맵게 (우선순위 큐) 본문

[코딩테스트]/문제풀이

프로그래머스 : 더 맵게 (우선순위 큐)

요르딩딩 2022. 5. 13. 15:25
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
반응형
Comments