ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Programmers LV.2 프린터
    Programmers 2020. 12. 27. 05:02

     

     

    지문을 읽으면읽을수록 참 이해가 잘안되는거같다 

     

    처음엔 

     

    아래와 같이 개발했다가 테스트케이스 단위에서 정확성에서 실패 두두두두두

    import java.util.*;
    class Solution {
        public int solution(int[] priorities, int location) {
            int answer = 0;
            class Print{
                Integer priorite = null;
                Integer location_priorite = null;
    
                public Print(Integer priorite,Integer location_priorite){
                    this.priorite = priorite;
                    this.location_priorite = location_priorite;
                }
    
                public Integer getPriorite() {
                    return priorite;
                }
    
                public void setPriorite(Integer priorite) {
                    this.priorite = priorite;
                }
    
                public Integer getLocation_priorite() {
                    return location_priorite;
                }
    
                public void setLocation_priorite(Integer location_priorite) {
                    this.location_priorite = location_priorite;
                }
            }
    
            Queue<Print> sortPrioritie = new LinkedList<>();
    
            List<Print> prioriteList = new ArrayList<>();
            for(int b=0; b<priorities.length; b++){
                sortPrioritie.offer(new Print(priorities[b], b));
            }
    
    
            for(int a =0; a < priorities.length; a++){
                for(int b =a+1; b < priorities.length; b++){
                        if(priorities[a] < priorities[b]){
                            sortPrioritie.offer(sortPrioritie.poll());
                            break;
                        }
                }
            }
    
            int c = 1;
            for(Print print : sortPrioritie){
                if(print.location_priorite ==location ){
                    System.out.println(answer);
                    answer = c;
                }
                c++;
            }
            return answer;
        }
    }

     

    위처럼하다가 너무 미궁에 빠져서

     

    Array<Integer>로 id로 빼서 collection sort로 했다가, 그렇게하면 또 우선 값만 소팅하다보니깐 큐를 무조건써야해서

     

    다른 분 코드를 참고해서 풀었다.

     

    큐쪽은 지문 그대로 읽고 개발하다간 머리가 복잡해지는거같다.

     

    import java.util.*;
    class Solution {
        public int solution(int[] priorities, int location) {
            int answer = 0;
            PriorityQueue<Integer> que = new PriorityQueue<>(Collections.reverseOrder());
            for(int b=0; b<priorities.length; b++){
                que.offer(priorities[b]);
            }
    
            while (!que.isEmpty()){
    
                for(int a=0; a < priorities.length; a++){
                    if(que.peek() == priorities[a]){
                        que.poll();
                        answer++;
                        if(location == a){
                            que.clear();
                            break;
                        }
                    }
                }
            }
             return answer;
        }  
    }

    'Programmers' 카테고리의 다른 글

    Programmers LV.3 디스크 컨트롤러  (0) 2020.12.29
    Programmers LV.2 더 맵게  (0) 2020.12.28
    Programmers LV.2 다리를 지나가는 트럭  (0) 2020.12.23
    Programmers LV.2 주식가격  (0) 2020.12.20
    Programmers LV.3 베스트앨범  (0) 2020.12.19

    댓글

Designed by black7375.