[프로그래머스/queue/level2] 기능 개발
1. 문제 설명
- 일별로 추가하면서 가장 앞에 있는 작업 완료 여부를 확인한다.
- 앞의 작업을 완료할 경우,
완료한 작업은 큐에서 제거
하고다음 작업의 완료 여부
를 확인한다. - 앞의 작업을 완료되지 않았을 경우,
일자(day)를 증가
시킨다.
- 앞의 작업을 완료할 경우,
- 만약 작업을
완료한 기능이 존재한다면 결과 리스트(answrList)에 추가
한다.
2. 문제 해결 코드
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> answerList = new ArrayList<>();
Queue<Work> queue = new LinkedList<>();
for (int i = 0; i < progresses.length; i++) {
queue.offer(new Work(progresses[i], speeds[i]));
}
int days = 1;
while (!queue.isEmpty()) {
int cnt = 0;
while (!queue.isEmpty()) {
Work work = queue.peek();
if (!work.isDone(days)) {
break;
}
queue.poll();
cnt++;
}
if (cnt > 0) {
answerList.add(cnt);
}
days++;
}
return answerList.stream().mapToInt(i -> i).toArray();
}
}
class Work {
private int progress;
private int speed;
Work(int progress, int speed) {
this.progress = progress;
this.speed = speed;
}
public boolean isDone(int days) {
return this.progress + (days * speed) >= 100;
}
}
Author And Source
이 문제에 관하여([프로그래머스/queue/level2] 기능 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pbg0205/프로그래머스queuelevel2-기능-개발저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)