알고리즘

[프로그래머스/JAVA] 기능개발(스택/큐)

데메즈 2021. 12. 27. 23:04
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/42586?language=java 

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

Queue(큐)

  예외 발생 값 리턴
추가 add(e) offer(e)
삭제 remove() poll()
검사 element() peek()

- add(item) : item을 리스트 끝부분에 추가

-  remove() : 리스트의 첫 번째 항목을 제거

- peek() :  큐에서 가장 위에 있는 항목을 반환

- isEmpty() : 큐가 비어있을 때  true를 반환

 

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        
        Queue<Integer> q = new LinkedList<>();
        List<Integer> answerList = new ArrayList<>();
        
        for(int i=0; i<speeds.length; i++){
            double remain = (100 - progresses[i])/(double)speeds[i];
            int date = (int) Math.ceil(remain);
            
            if(!q.isEmpty() && q.peek() < date){ // 안비었고 리턴값이 date보다 작을때
                answerList.add(q.size()); // q의 크기를 넣음
                q.clear(); // q 초기화
            }
            q.offer(date); // q에 date 추가
        }
        
        answerList.add(q.size());
        
        int[] answer = new int[answerList.size()];
        
        for(int i=0; i<answer.length;i++){
            answer[i] = answerList.get(i);
        }
        
        
        return answer;
    }
}
728x90
반응형