https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=java#
초기 문제 접근
- progresses 요소들을 queue 안에 넣고
- 순회하면서 speeds를 더해주고
- 100이 넘는 애들이 나오면 그때 count++하고 answer에 넣기
이런식으로 하려 했으나.. 그럼 speeds를 저장하는 queue도 따로 만들어줘야 하고, 여럿 문제가 생겨버렸다..
이후 문제 접근
- progresses를 순회하며, 기능 개발에 남은 일수를 Math.ceil 올림을 통해 계산하고
- queue 맨 앞에 있는 남은 일수를 꺼낸 다음에
- 뒤에 있는 기능들의 남은 일수보다 같거나 작은 애들 다 빼면서 count++
코드
import java.util.*;
class Solution {
public ArrayList<Integer> solution(int[] progresses, int[] speeds) {
ArrayList<Integer> answer = new ArrayList<Integer>();
Queue<Integer> queue = new LinkedList<Integer>();
for(int i=0; i<progresses.length; i++){
queue.add((int)Math.ceil((100.0-progresses[i])/speeds[i]));
}
while(!queue.isEmpty()){
int minDays = queue.poll();
int count = 1;
while(!queue.isEmpty() && queue.peek() <= minDays){
queue.poll();
count++;
}
answer.add(count);
}
return answer;
}
}
참고 자료
https://mundol-colynn.tistory.com/126
'Development > PS' 카테고리의 다른 글
[Basic] Softeer Lv. 1 A+B java 풀이 (+ BufferedReader의 관해) (0) | 2024.01.19 |
---|---|
[Stack] 프로그래머스 level 2 올바른 괄호 java 풀이 (0) | 2024.01.10 |
[DFS] 프로그래머스 level 3 네트워크 java 풀이 (0) | 2024.01.01 |
[Hash] 프로그래머스 level 3 베스트앨범 java 풀이 (1) | 2023.12.23 |
[Hash]프로그래머스 level 2 의상 java 풀이 (2) | 2023.12.22 |