ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Programmers LV.2 더 맵게
    Programmers 2020. 12. 28. 19:20

     

     

    힙 우선순위로 나열해서 처리하면 될 것 같아서 했는데 테스트케이스 16번에서 에러가 나 원인을 확인해보고있었다.

     

    수정 전

    @org.junit.Test
        public void scoville(){
            int[] scovilles = { 1, 2, 3, 9, 10, 12 };
            int K = 7;
    
            Queue<Integer> que = new PriorityQueue<Integer>((o1, o2) -> Integer.compare(o1,o2));
            for(int scoville : scovilles){
                que.offer(scoville);
            }
    
            int answer = 0;
            int check = 0;
            while (que.size() > 1){
                if(que.peek() >= K){
                    answer = check;
                    break;
                }
    
                int o1 = que.poll();
                int o2 = que.poll();
                int tempCalc = o1 + (o2*2);
                que.offer(tempCalc);
                check++;
    
                if(que.size() == 1 && que.peek() < K){
                    answer = -1;
                }
    
            }
    
            System.out.println(answer);
        }

     

    16번 테스트 케이스를 scoville : [1,2,3] K : 11 로 잡고 수정했다.

     

    @org.junit.Test
        public void scoville(){
            int[] scovilles = { 1, 2, 3 };
            int K = 11;
    
            Queue<Integer> que = new PriorityQueue<Integer>((o1, o2) -> Integer.compare(o1,o2));
            for(int scoville : scovilles){
                que.offer(scoville);
            }
    
            int answer = 0;
            int check = 0;
            while (que.size() > 1){
                if(que.peek() >= K){
                    answer = check;
                    break;
                }
    
                int o1 = que.poll();
                int o2 = que.poll();
                int tempCalc = o1 + (o2*2);
                que.offer(tempCalc);
                check++;
    
                if(que.size() == 1){
                    if(que.peek() < K){
                        answer = -1;
                    }else if( que.peek() >= K){
                        answer = 1;
                    }
                }
    
            }
    
            System.out.println(answer);
        }

     

    음식이 다섞여서 1개로 딱 맞춰질 경우가 존재해서 16번이 틀린것으로 보인다.

    'Programmers' 카테고리의 다른 글

    Programmers LV.1 K번째수  (0) 2020.12.29
    Programmers LV.3 디스크 컨트롤러  (0) 2020.12.29
    Programmers LV.2 프린터  (0) 2020.12.27
    Programmers LV.2 다리를 지나가는 트럭  (0) 2020.12.23
    Programmers LV.2 주식가격  (0) 2020.12.20

    댓글

Designed by black7375.