바위 뚫는중

[프로그래머스] Lv2. 더 맵게 본문

Algorithms/프로그래머스

[프로그래머스] Lv2. 더 맵게

devran 2023. 8. 10. 15:27
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42626

카테고리가 큐로 주어졌기에 아주 쉽게 접근했지만, 만약 그렇지 않는다면 접근하는데 시간이 걸렸을 것 같음!

런타임 에러난 코드

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> queue = new PriorityQueue<>();        
        //우선순위 큐로 작은 수 부터 정렬해준다
        for(int i = 0; i < scoville.length; i++){
            queue.add(scoville[i]);
        }
        //맨앞자리를 peek로 확인해서 k보다 작다면 연산을 해주고 다시 넣어준다
        for(int i = 0; i < scoville.length; i ++) {
            if(queue.peek() < K) { //맨 앞자리가 K보다 작다면?
              queue.add(queue.poll() + queue.poll()*2);
                answer += 1;
            }
        }
    
      return answer;
    }
    
  
}

생각해보니 만들수 없을때 -1을 리턴하는걸 깜빡함,,ㅎㅎ

근데 의외로 어떤 경우에 -1을 리턴해야하는지 고려하는게 꽤나 어려웠던 것 같다.

import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        PriorityQueue<Integer> queue = new PriorityQueue<>();        
        //우선순위 큐로 작은 수 부터 정렬해준다
        for(int i = 0; i < scoville.length; i++){
            queue.add(scoville[i]);
        }
        //맨앞자리를 peek로 확인해서 k보다 작다면 연산을 해주고 다시 넣어준다
        for(int i = 0; i < scoville.length; i ++) {
            if(queue.peek() < K && queue.size()>=2) { //맨 앞자리가 K보다 작고 남은게 2개 이상이라면  
                queue.add(queue.poll() + queue.poll()*2);
                answer += 1;
            }
        }
        if(queue.peek() < K){
            answer = -1;
        }
        return answer;
    }
}
반응형