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

수경·2023년 1월 17일
0

problem solving

목록 보기
106/174

프로그래머스 - 기능개발

풀이

  1. progresses를 순회하면서 개발까지 남은 양 / 개발 속도 값을 담은 배열 time을 만들어줌 -> 개발까지 남은 일수를 계산
    ❗️나누어 떨어지지 않는 경우 하루가 더 걸림
  2. ArrayList 자료형을 선언해서 time을 순회하면서 한 번에 배포할 수 있는 progresses의 개수를 세어 추가
    ➡️ max를 정해서 max보다 작은 값을 만나면 count++ (한 번에 배포할 수 있는 프로그램의 수)
    ➡️ max보다 큰 값을 만나면 count를 리스트에 추가하고 max값으로 저장

코드

import java.util.*;

public class FunctionDevelopment {
	public int[] solution(int[] progresses, int[] speeds) {
		int[] time = new int[progresses.length];
		for (int i = 0; i < progresses.length; i++) {
			time[i] = ((100 - progresses[i]) / speeds[i]) + ((100 - progresses[i]) % speeds[i] > 0 ? 1 : 0);
		}

		List<Integer> result = new ArrayList<>();
		int max = time[0];
		int count = 1;
		for (int i = 1; i < time.length; i++) {
			if (time[i] <= max) {
				count++;
			}
			else {
				max = time[i];
				result.add(count);
				count = 1;
			}
		}
		result.add(count);

		int[] resultArr = new int[result.size()];
		for (int i = 0; i < result.size(); i++) resultArr[i] = result.get(i);
		return resultArr;
	}

	public static void main(String[] args) {
		FunctionDevelopment functionDevelopment = new FunctionDevelopment();
		System.out.println(Arrays.toString(functionDevelopment.solution(new int[]{93, 30, 55}, new int[]{1, 30, 5})));  // [2, 1]
		System.out.println(Arrays.toString(functionDevelopment.solution(new int[]{1, 1, 1, 1}, new int[]{100, 50, 99, 100}))); // [1, 3]
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글