링크 : https://programmers.co.kr/learn/courses/30/lessons/42586
import java.util.*;
import java.util.List;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = {};
List<Integer> answers = new ArrayList<>();
List<Work> works = new ArrayList<>();
//세팅
for(int i=0; i< progresses.length; i++){
works.add(new Work(progresses[i], speeds[i]));
}
//루프
while(works.size() > 0){
// 임시 완료 리스트
List<Work> finished = new ArrayList<>();
works.stream().forEachOrdered(Work::doWork);
Iterator<Work> iterator = works.iterator();
//루프
while(iterator.hasNext()){
Work now = iterator.next();
//첫 작업 확인
if(now.checkFinish()){
finished.add(now);
iterator.remove();
}else //순차 확인후 루프 중단
break;
}
//완료 작업수 추가
int finishedSize =finished.size();
if(finishedSize > 0){
answers.add(finishedSize);
}
}
answer = answers.stream().mapToInt(v->v).toArray();
return answer;
}
public class Work{
int progress;
int speed;
public Work(int progress, int speed) {
this.progress = progress;
this.speed = speed;
}
public int doWork(){
if(!checkFinish()) {
progress += speed;
}
return progress;
}
public boolean checkFinish(){
return progress >= 100;
}
@Override
public String toString() {
return "\n Work{" +
"progress=" + progress +
", speed=" + speed +
'}';
}
}
}
'교육 > 코테' 카테고리의 다른 글
[프로그래머스]SQL 입양 시각 구하기(1) (0) | 2022.07.03 |
---|---|
[프로그래머스]JAVA 더 맵게 -힙 (0) | 2022.07.01 |
[프로그래머스]JAVA 124 나라의 숫자 (0) | 2022.07.01 |
[프로그래머스]JAVA 행렬 테두리 회전하기 (0) | 2022.06.30 |
[프로그래머스]JAVA 로또의 최고 순위와 최저 순위 (0) | 2022.06.29 |