프로그래머스_더맵게

덤벨로퍼·2024년 8월 6일
0

코테

목록 보기
33/37

더 맵게

오답 풀이

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        int N = scoville.length;
        
        for(int i = 0; i < N; i++){
            pq.offer(scoville[i]);
        }
        
        while(pq.size() >= 2){
            answer++;
            int sum = 0;
            int a = pq.poll();
            int b = pq.poll();
            sum = a + 2*b;
            pq.offer(sum);
            
            if(pq.peek() >= K){
                return answer;
            }
        }
        
        if(pq.peek() >= K){
            return answer;
        }else{
            return -1;
        }
        
        
    }
}
  • 이렇게 풀면 처음부터 전부가 K 이상일 경우를 정확하게 잡아내지 못함!
  • 무조건 섞고 판단하게 된다!

📌 처음에 섞지 않고도 만족하는 경우를 고려하지 못했다!

  • 조건문을 좀 더 심도있게 세우자

재풀이

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        
        for (int scov : scoville) {
            pq.offer(scov);
        }
        
        while (pq.size() > 1 && pq.peek() < K) {
            int a = pq.poll();
            int b = pq.poll();
            int newScoville = a + 2 * b;
            pq.offer(newScoville);
            answer++;
        }
        
        if (pq.peek() < K) {
            return -1;
        } else {
            return answer;
        }
    }
}
profile
💪 점진적 과부하로 성장하는 개발자

0개의 댓글