본문 바로가기
CodingTest/Programmers

[Programmers] 기능개발

by 창브로 2025. 7. 11.

[문제 링크]

https://school.programmers.co.kr/learn/courses/30/lessons/42586

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이 과정]

처음에 남은 시간을 구하고 일을 처리하기 위한 일 수를 구한다.

그리고 queue 자료구조를 통해 가장 먼저 들어간 작업을 빼서 몇일이 걸린지 확인 후

다음에 계속 나오는 시간들을 비교해 정답을 구한다.

 

[코드]

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        List<Integer> answer = new ArrayList<>();
        int[] leftTime = new int[progresses.length];
        int[] days = new int[progresses.length];
        Queue<Integer> queue = new LinkedList<>();
        
        for(int i = 0; i < progresses.length; i++) {
            leftTime[i] = 100 - progresses[i];
        }
        
        for(int i = 0; i < progresses.length; i++) {
            if(leftTime[i] % speeds[i] == 0) {
                days[i] = leftTime[i] / speeds[i];
            } else {
                days[i] = leftTime[i] / speeds[i] + 1;
            }
        }
        
        for(int day : days) {
            queue.offer(day);
        }
        
        int last = queue.poll();
        int sum = 1;
        
        
        while(!queue.isEmpty()) {
            int cur = queue.peek();
            
            if(cur > last) {
                last = cur;
                queue.poll();
                answer.add(sum);
                sum = 1;
            } else {
                queue.poll();
                sum++;
            }
        }
        
        answer.add(sum);
        
        return answer.stream().mapToInt(i->i).toArray();
    }
}

[회고]

쉬웠습니다.

 

 

 

 

질문과 피드백은 언제나 환영입니다.

감사합니다.

'CodingTest > Programmers' 카테고리의 다른 글

[Programmers] 순위  (1) 2025.07.15
[Programmers] 다리를 지나는 트럭  (1) 2025.07.14
[Programmers] 괄호 회전하기  (3) 2025.07.09
[Programmers] 입국 심사  (1) 2025.06.26
[Programmers] 메뉴 리뉴얼  (1) 2025.06.24