Development/CodingTest

[프로그래머스] Java 기능개발

Kirok Kim 2021. 12. 13. 21:51
import java.util.ArrayList;
class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        ArrayList<Integer> aanswer = new ArrayList<>();
        ArrayList<Integer> ll = new ArrayList<>();
        int cnt=0;
        for(int i=0; i<progresses.length;i++){
            int l=progresses[i];
            while(l<100){
                l+=speeds[i];
                cnt++;
            }
                ll.add(cnt);
                cnt=0;
        }

		cnt = 1;
		int j = 0;
		while (true) {
			if (ll.get(j) >= ll.get(j + 1)) {
				ll.remove(j + 1);
				cnt++;
			} else {
				j++;
				aanswer.add(cnt);
				cnt = 1;
			}

			if (ll.size() - 1 == j) {
				aanswer.add(cnt);
				break;
			}
		}

		int[] answer = new int[aanswer.size()];
		for (int i = 0; i < aanswer.size(); i++) {
			answer[i] = aanswer.get(i);
		}
		return answer;
	}
}
  • 최초에는 기존 그대로 배열에다가 담으려 했지만 index범위 초과로 골머리를 앓다가 간단히 arraylist로 전향하여 썼다.
  • 업무의 진행은 동시에 진행되며 100이 넘지 않는 동안 계속 더해주며 list에 cnt를 세어 넣었다.
  • 다만 좀 아쉬운 부분이 있다면 제일 마지막 부분 ArrayList를 Array로 바꿔 주는 부분을 반복문을 통해 변환 하는 것 말고 메소드를 통해서 변환하는 것을 염두해 보자
반응형