반응형
1. 문제 정의
2. 문제 접근
순차적으로 배포를 해야하고, 앞에 배포가 안되면 뒤에 배포도 기다려야 하니 Queue를 사용하면 될 것 같다.
3. 문제 풀이
- Queue에 배포 시간을 순차적으로 적재
- 배포될때마다 그 뒤에 배포가 이미 완료면 같이 처리
- 정답 출력
4. 코드
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer;
List<Integer> list = new ArrayList<>();
Queue<Integer> q = new LinkedList<>();
for(int i = 0; i < progresses.length; i++){
int day = 1;
int pro = progresses[i];
int speed = speeds[i];
while(pro+speed*day < 100){
day++;
}
System.out.println(day);
q.add(day);
}
while (!q.isEmpty()) {
int day = q.poll();
int deploy = 1;
while (!q.isEmpty() && q.peek() <= day) {
q.poll();
deploy++;
}
list.add(deploy);
}
answer = new int[list.size()];
for(int i = 0; i < list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
5. 회고
Queue를 활용하여 간단하게 해결할 수 있는 문제였다. 다만, q.peek() 해줄 때 null 일 수 있으니 꼭 !q.isEmpty() 통해 Queue가 안 비어었는지 체크를 해주자!
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
99클럽 코테 스터디 3일차 TIL, Heap(더 맵게) (0) | 2024.05.24 |
---|---|
99클럽 코테 스터디 2일차 TIL, Stack(올바른 괄호) (0) | 2024.05.23 |
PCCP 모의고사 1회 - 운영체제 (0) | 2023.02.18 |
PCCP 모의고사 2회 - 보물 지도 (0) | 2023.02.18 |
PCCP 모의고사 2회 - 카페 확장 (1) | 2023.02.18 |