[문제 링크]
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 |