나의 풀이
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> days = new ArrayList<>();
ArrayList<Integer> answer = new ArrayList<>();
for(int i=0; i<progresses.length; i++) {
//정수기리 나누는 경우 소수점 이하가 버려진다. 따라서 double 연산자를 사용한다.
//double연산자를 통해 소수 부분을 살리고, 올림을 한 다음 다시 int형으로 형변환해준다.
int ceil = (int) Math.ceil((100 - progresses[i]) / (double)speeds[i]);
days.add(ceil);
}
int first=days.get(0);
int cnt=0;
//{7, 3, 9, 4, 1, 5}
for(int day: days){
//1번 for문을 순회하면서 7,3일 때 cnt+=1이 두번 작용하고
//4번 4,1,5 일때 cnt+=1 3번 작용하고, day요소는 끝이났고, else문의 1번과 if문의 cnt 3번이 합쳐져 cnt=4가 된 것을 for문을 완전히 빠져나왔을때 저장해준다.
if(day<=first){
cnt+=1;
} else{
//2번 9일 때 7,3을 2번 카운트 한것이 리스트에 저장된다.
answer.add(cnt);
//3번 9 자신을 cnt하면서 cnt=1로 reset한다.
cnt=1;
first= day;
}
}
answer.add(cnt);
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}
▶ 주석을 참고하길 바란다.
▶ 소요일수 데이터를 담기 위한 day list와 cnt를 담기 위한 answer list를 만들었다.
'프로그래머스(자바) > LV.2(자바)' 카테고리의 다른 글
뉴스 클러스터링→substring(), 정규식, 이중for문+교집합★★ (0) | 2022.12.28 |
---|---|
프린터★→ 순서쌍을 사용X, 기능개발과 유사★★+while(true) (0) | 2022.12.28 |
위장→replaceAll() : 요소 전부 +1하기, 요소 전부 곱하기★ +map함수이용(count)★ (1) | 2022.12.27 |
괄호 회전하기★★ →List의 rotate()를 이용, String → 리스트 (1) | 2022.12.27 |
1차 캐시→ 익명 클래스★★, this참조변수, super() 생성자 (0) | 2022.12.26 |