안녕하세요 이번에는 프로그래머스 level2 기능개발 문제 풀이입니다
이 문제는 스택/큐 문제로 분류가 되어있는데요
저는 스택이나 큐를 사용하지 않고 그냥 arrayList를 이용하여 풀었습니다
이 문제의 핵심 내용은 뒤의 기능이 더 빨리 끝나더라도 앞의 기능이 배포되어야
그때서야 배포될 수 있다는 것입니다
예를들어 기능별 걸리는 일 수가 7,3,5,9라면
2,3번째 기능은 첫번째 기능이 구현된 7일째에 한 번에 배포되고 4번째 기능이 9일째에 배포되서
답은 '3,1'이 됩니다. 즉 수를 비교하며 뒤의 숫자가 더 작다면 큰 수가 나올때까지 count해주면 됩니다
자세한 풀이 내용과 코드는 깃허브 에서도 볼 수 있습니다!!
https://github.com/wlgh325/Programmers_algorithm/tree/master/Level2/%EA%B8%B0%EB%8A%A5%EA%B0%9C%EB%B0%9C
프로그래머스 기능 개발 자바 코드는 아래를 참고하셔도 됩니다
import java.util.ArrayList;
class Main{
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> answerList = new ArrayList<>();
ArrayList<Integer> arrList = new ArrayList<>();
// 기능마다 걸리는 일 수 계산
for (int i = 0; i < progresses.length; i++) {
int cnt = 0;
while(true){
progresses[i] += speeds[i];
cnt++;
if(progresses[i] >= 100){
arrList.add(cnt);
break;
}
}
}
int cnt = 1;
int j=0;
while(true){
if(arrList.get(j) >= arrList.get(j+1)){
arrList.remove(j+1);
cnt++;
}
else{
j++;
answerList.add(cnt);
cnt = 1;
}
if(arrList.size() -1 == answerList.size()){
answerList.add(cnt);
break;
}
}
// int형 배열로 변환
int[] answer = new int[answerList.size()];
for (int i = 0; i < answerList.size(); i++) {
answer[i] = answerList.get(i);
}
return answer;
}
}