[프로그래머스] LEVEL2 기능개발 JAVA

Pixel Dophin·2023년 6월 2일
0

프로그래머스

목록 보기
1/55
post-thumbnail

기능개발

문제링크

풀이

큐를 활용해서 문제 풀이

  1. 작업 (progress)마다 작업완료까지 걸리는 시간을 계산한다.
  2. 첫날을 제외하고 각 작업 순서대로 현 작업의 완료까지 걸리는 시간이 이전 작업 완료 시간보다 작거나 같은 경우는 계속 해서 count를 통해 작업 갯수를 더해준다.
  3. 현 작업의 완료까지 걸리는 시간이 이전 작업 완료 시간보다 큰 경우는 이전 까지의 작업 수를 queue에 담아 저장한다.
  4. 마지막 배포 날의 작업들도 queue에 담아 저장한다.
  5. 이후 순서대로 꺼내서 answer에 담는다.

코드

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        
        int day = 0;
        int count = 0;
        
        Queue<Integer> queue = new ArrayDeque<>();
        
        for (int i = 0; i < progresses.length; i++) {
            // i번째 작업 진도
            int progress = progresses[i];
            
            // n일 후 가능
            int n = (int) Math.ceil((double) (100 - progress) / (double) speeds[i]);

			// 첫날 날짜 초기화
            if (day == 0) {
                day = n;
            }
            
            // 배포 날짜가 달라지는 경우 확인
            if (n > day) {
                queue.offer(count);
                count = 1;
                day = n;
            }
            // 배포 날짜가 달라지지 않는 경우
            else {
                count++;
            }

        }
        queue.offer(count);

        int answerSize = queue.size();
        int[] answer = new int[answerSize];
        
        for (int i = 0; i < answerSize; i++) {
            answer[i] = queue.poll();
        }
        
        return answer;
    }
}
profile
안녕 👋 성장하고픈 개발자 💻 입니다

0개의 댓글

관련 채용 정보