[프로그래머스 코딩테스트] 스택/큐 - 기능개발

EUN JY·2022년 2월 9일
2

Coding Test

목록 보기
2/9
post-thumbnail

맨날 헷갈려서 검색하는 스택과 큐...

스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO 스택은 LIFO, 큐는 FIFO..!!!

계산해둔 잔여 작업일을 큐에 담는 작업을 먼저 수행했다.
이후 workDays.poll();로 하나씩 추출해
이전 작업일과 비교하여 동시 배포 개수 배열 answer를 구했다.

answer.stream().mapToInt(i->i).toArray(); 이거는
ArrayList를 배열로 변환하기 위해 사용했다.

import java.lang.Math;
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        Queue<Integer> workDays = new LinkedList<>();
        List<Integer> answer = new ArrayList<>();

        for (int i=0; i<progresses.length; i++) {
            int day = (int) Math.ceil( (double) (100 - progresses[i]) / speeds[i] ); // 올림
            workDays.add(day);
        }

        int prevVal = 0;
        int flag = -1;

        while (!workDays.isEmpty()) {
            int curVal = workDays.poll();
            if (curVal > prevVal) {
                answer.add(1);
                flag++;
                prevVal = curVal;
            } else {
                answer.set(flag, answer.get(flag) + 1);        
            }
        }

        return answer.stream().mapToInt(i->i).toArray();
    }
}
profile
개린이

0개의 댓글