본문 바로가기
Java/공부

by notcherry 2023. 8. 13.

 

 

 

날라가서 다시 쓰는 글....

 

큐에 대한 이해를 돕기 위해 프로그래머스 문제를 가지고 왔다.

 

 

 

 

 

 

문제 풀이 순서

 

1. 남은 작업 일수를 구하기(큐로 저장)

2. 배포 순서 계산하기

3. return값에 넣기

 

 

 

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        
        List<Integer> answer = new ArrayList<>();
        Queue<Integer> queue = new LinkedList<>();
        //작업 일수 구하기
        for(int i =0; i<progresses.length; i++){
            if((100-progresses[i])%speeds[i]==0){
                queue.offer((100-progresses[i])/speeds[i]);
            }else{ queue.offer((100-progresses[i])/speeds[i]+1);}
            
        }
        //배포 순서 정하기
        int next = queue.poll();
        int cnt = 1;
        
        for(int i = 1 ; i<progresses.length; i++){
            if(next>=queue.peek()){
                 cnt++;
            }else {
                 answer.add(cnt);
                 cnt=1;
            }
            next = Math.max(next,queue.poll());
         }
        answer.add(cnt);
        
        return answer.stream().mapToInt(n->n).toArray();
    }
}

 

 

메소드

 

1. 삽입

add()  : 삽입에 성공하면 true 반환. 

offer() : 삽입만 함

 

2.삭제

poll() : 큐의 첫 번째 원소 반환 후 큐에서 해당 원소 삭제. 큐가 비어 있다면 null 반환.

remove() : 큐의 첫 번째 원소 반환 후 해당 원소 삭제.

 

3.조회(삭제는 안 함)

peek() : 큐의 첫 번째 원소 반환. 비어있는 큐는 null 반환.

element() : 큐의 첫 번째 원소 반환. 

 

'Java > 공부' 카테고리의 다른 글

[자바] split 사용 방법  (0) 2023.10.31
필터  (0) 2023.08.10
리스너  (0) 2023.08.10
Servlet과 JSP(Java Server Pages)  (0) 2023.08.08
[Hashmap] .getOrDefault(key, defaultValue)  (0) 2023.07.25