🌞Algorithm/🔥programmers

[programmers] 기능개발

뿌야._. 2026. 8. 24. 11:44
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42586
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


< 기능개발 >

 

문제 풀이 (Java)

import java.util.*;

class Solution {
	public int[] solution(int[] progresses, int[] speeds) {
		int[] answer = {};

		ArrayList<Integer> list = new ArrayList<>();

		for (int i = 0; i < progresses.length; i++) {
			int num = 100 - progresses[i];

			int day = num / speeds[i];

			if (num % speeds[i] != 0) {
				day += 1;
			}

			if (i > 0 && list.get(list.size() - 1) > day) {
				day = list.get(list.size() - 1);
			}
			list.add(day);
		}

		ArrayList<Integer> result = new ArrayList<>();
		int temp = list.get(0);
		int cnt = 0;
		for (int i = 0; i < list.size(); i++) {
			if (temp == list.get(i)) {
				cnt += 1;
			} else {
				result.add(cnt);
				temp = list.get(i);
				cnt = 1;
			}
		}
		if (cnt > 0) {
			result.add(cnt);
		}

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

		return answer;
	}
}

 

progresses와 speeds를 보며 배포 날짜를 구해 ArrayList에 저장한다. 이때, 바로 앞의 기능보다 적게 걸린다면 앞에 있는 기능과 함께 배포되어야 하므로 앞의 기능과 날짜를 맞춘다. ArrayList를 살펴보며 같은 날짜에 몇 개를 배포하는지 각 개수를 세어 ArrayList에 저장한다. ArrayList의 값을 배열에 저장해 반환한다.



 

출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges

'🌞Algorithm > 🔥programmers' 카테고리의 다른 글

[programmers] 구명보트  (0) 2026.08.20
[programmers] 체육복  (0) 2026.08.19
[programmers] 모의고사  (0) 2026.08.18
[programmers] 더 맵게  (0) 2026.08.14
[programmers] 주식가격  (0) 2026.08.13