-
728x90
- 일이 끝나는데 걸리는 일수를 queue에 넣는다.
- 만약 queue의 맨 처음에 있는 일보다 오래걸린다면,
1) queue의 크기를 ArrayList에 추가한다.
2) queue를 비운다..- 모든 일의 탐색을 끝낸 후에, queue에 남아있는 일의 개수도 ArrayList에 추가한다.
- ArrayList를 int형 배열로 바꾸어 리턴한다.
import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { ArrayList<Integer> answer = new ArrayList<Integer>(); Queue<Integer> task = new LinkedList<Integer>(); for (int i = 0; i< speeds.length; i++) { double day = Math.ceil((100.0 - progresses[i]) / speeds[i]); if(!task.isEmpty() && day > task.peek()) { answer.add(task.size()); task.clear(); } task.offer((int) day); } if(!task.isEmpty()) answer.add(task.size()); return answer.stream().mapToInt(i -> i).toArray(); } }
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level2] 프로그래머스 - 소수 찾기(JAVA) (0) 2021.09.14 [level2] 프로그래머스 - 주식가격(JAVA) (0) 2021.09.14 [level3] 프로그래머스 - 여행경로(JAVA) (0) 2021.09.14 [level3] 프로그래머스 - 단어 변환(JAVA) (0) 2021.09.14 [level3] 프로그래머스 - 네트워크(JAVA) (0) 2021.09.14 댓글