https://programmers.co.kr/learn/courses/30/lessons/42586?language=java
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
기본 자료구조에 대한 이해가 필요한 문제입니다.
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> queue = new ArrayDeque<>();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < progresses.length; i++) {
int progress = progresses[i];
int speed = speeds[i];
int remain = 100 - progress;
queue.offer(remain % speed == 0 ? remain / speed : remain / speed + 1);
}
while (!queue.isEmpty()) {
int top = queue.poll();
int cnt = 1;
while (!queue.isEmpty() && queue.peek() <= top) {
queue.poll();
cnt++;
}
list.add(cnt);
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++)
answer[i] = list.get(i);
return answer;
}
}
1. 각 작업이 완성될 떄까지의 시간을 구합니다.
2. 하나의 작업이 끝나는 시간보다 적은 시간이 걸리는 일들을 queue에서 꺼냅니다.
3. 꺼낸 queue의 갯수를 셉니다.
4, list에 담고 갯수를 초기화합니다.
'알고리즘 공부' 카테고리의 다른 글
프로그래머스 스택/큐 : [프린터] JAVA 풀이 (0) | 2022.05.02 |
---|---|
프로그래머스 3단계/효율성 : [숫자 게임] Java 풀이 (0) | 2022.05.01 |
프로그래머스 팁스다운 : [예상 대진표] Java 문제 풀이 (재귀) (0) | 2022.04.26 |
프로그래머스 탐욕법(그리디) : [폰켓몬] Java 문제 풀이 (한 줄) (0) | 2022.04.25 |
프로그래머스 카카오 : [크레인 인형뽑기 게임] Java 문제 풀이 (0) | 2022.04.23 |