문제
답안 코드
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] remain = new int[speeds.length];
ArrayList<Integer> day = new ArrayList<Integer>();
for(int i = 0; i < progresses.length; i++){
if((100 - progresses[i]) % speeds[i] == 0)
remain[i] = (100 - progresses[i]) / speeds[i];
else
remain[i] = (100 - progresses[i]) / speeds[i] + 1;
System.out.println(remain[i]);
}
int p = 1;
for(int i = 1; i < remain.length; i++){
if(remain[i-1] >= remain[i]){
p++;
remain[i] = remain[i-1];
}
else if(remain[i-1] < remain[i]){
day.add(p);
p = 1;
}
}
day.add(p);
int[] answer = new int[day.size()];
for(int i = 0; i <day.size(); i++){
answer[i] = day.get(i);
}
return answer;
}
}
코드 풀이
일단 걸리는 일을 배열로 구해주고, 크기 미지정인 list 하나를 선언해준 후 배열에서 i-1과 비교해 i가 더 크면 1을 list에 넣어주고 i가 더 작으면 i가 더 커질 때까지 p를 1씩 증가.
i가 다시 커지면 p를 list에 넣어주기.
p를 언제 넣어줘야하는지 때문에 고민 했던 문제.