기능개발 (for JAVA)

큐를 쓸일이 현업에서 거이 없었다보니 큐가 상당히 약한것 같다.(실은 다 못하는게 아닐까?) 검색해서 찾은 내용들이다.

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        LinkedList<Integer> ll = new LinkedList<Integer>();
        for(int i =0;i<progresses.length;i++) {
            int value = (100-progresses[i]) / speeds[i];
            if ((100-progresses[i]) % speeds[i] == 0) {
                ll.offer(value);
            } else {
                ll.offer(value+1);
            }
        }
        
        ArrayList<Integer> list = new ArrayList<Integer>();
        int prevCalCnt = ll.poll();
        int pullCnt = 1;
        while(!ll.isEmpty()) {
            int diffCalCnt = ll.poll();
            if(prevCalCnt>=diffCalCnt) {
                pullCnt++;
            } else {
                list.add(pullCnt);
                pullCnt=1;
                prevCalCnt = diffCalCnt;
            }
        }
        list.add(pullCnt);
        int[] answer = new int[list.size()];
        for(int i = 0;i<list.size();i++) {
            answer[i] = list.get(i);
        }
        
        return answer;
    }
}

다른 부분은 넘기고 while문 안쪽이 중요하다
단순하고 이해가 아주 잘되는 코드이다. 멀티스레드와 같이 동시에 리스트가 사용될 경우 리스트의 앞전 내용이 먼저 나오지 않으면 기다렸다가 같이 배출되게 된다. 사실 로직은 굉장히 쉽고 간단한데, 어디에서 어떻게 응용될지를 많이 고민해야 하는 로직인듯 싶다.

좋은 웹페이지 즐겨찾기