728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42586
풀이
배열로 풀었는데 중간에 큐로 바꿔서 풀 수도 있을 듯??
내가 푼 방법말고 다른 방식의 풀이도 있을 것 같음. 내가 푼건 마지막에 각 배포마다 몇 개의 기능이 배포되는지 계산하는 부분이 좀 더러워서,,, ㅠ
코드
// 코딩테스트 연습 - 스택/큐 - 기능개발
// https://programmers.co.kr/learn/courses/30/lessons/42586
package PROGRAMMERS.level2;
import java.util.ArrayList;
public class Num42586_기능개발 {
private static class Solution{
private int[] solution(int[] progresses, int[] speeds) {
int[] answer = {};
int[] check = new int[progresses.length]; // 각 기능의 작업이 완료되기까지 며칠이 걸리는지
for (int i = 0; i < progresses.length; i++) {
int count = 0;
while (progresses[i] < 100) {
progresses[i] += speeds[i];
count++;
}
check[i] = count;
}
int temp = check[0];
int count = 1; // 몇개의 기능이 한번에 배포가 될지 세는 변수
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 1; i < check.length; i++) {
if (temp >= check[i]) {
count++;
if (i == check.length - 1) {
arrayList.add(count);
break;
}
continue;
} else {
temp = check[i];
arrayList.add(count);
count = 1;
}
if (i == check.length - 1) {
arrayList.add(count);
break;
}
}
// 출력
answer = new int[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
answer[i] = arrayList.get(i);
}
return answer;
}
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(sol.solution(new int[]{93, 30, 55}, new int[]{1, 30, 5}));
System.out.println(sol.solution(new int[]{95, 90, 99, 99, 80, 99}, new int[]{1, 1, 1, 1, 1, 1}));
}
}
}
728x90