문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42586
제한 사항
입출력 예
풀이
import java.util.ArrayList;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> answer = new ArrayList<>();
int[] result = new int[progresses.length];
int pre = 0, check = 0;
while(check != progresses.length) {
check = 0;
for (int i = 0; i < progresses.length; i++) {
if (progresses[i] < 100) {
progresses[i] += speeds[i];
if (progresses[i] >= 100) {
result[i] = 1;
check++;
}
}
else check++;
}
int count = 0;
if (result[pre] == 1) {
for (; pre < progresses.length; pre++) {
if (result[pre] != 1) break;
count++;
}
answer.add(count);
}
}
return answer.stream().mapToInt(i -> i).toArray();
}
}
후기
카테고리가 스택, 큐인데 이걸 사용하면 복잡할 것 같아서 그냥 리스트와 배열로 풀었다. 100점이 넘은 작업은 배열 값을 1로 변경하고 하루씩 지날 때마다 완료한 것 중 가장 앞에 있는 것의 위치가 pre 인덱스와 같으면 그 때 그 하루치의 완료된 작업을 리스트에 저장하면 된다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
[프로그래머스][JAVA][Lv. 2] 프로세스 (0) | 2023.09.12 |
---|---|
[프로그래머스][JAVA][Lv. 0] 배열 조각하기 (0) | 2023.09.11 |
[프로그래머스][JAVA][Lv. 2] 괄호 회전하기 (0) | 2023.09.07 |
[프로그래머스][JAVA][Lv. 2] 튜플 (0) | 2023.09.06 |
[프로그래머스][JAVA][Lv. 0] 다음에 올 숫자 (0) | 2023.09.05 |