알고리즘 공부/프로그래머스
(Java)프로그래머스 코딩테스트 연습 - 스택/큐 - 기능개발
HRuler
2020. 11. 1. 06:48
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
2. 나의 풀이
import java.util.ArrayList;
class Solution {
public ArrayList<Integer> solution(int[] progresses, int[] speeds) {
int [] remain_time = new int [progresses.length];
for(int i = 0; i < progresses.length; i = i + 1) {
int imsi = 0;
imsi += (100 - progresses[i]) / speeds[i];
if((100 - progresses[i]) % speeds[i] != 0) {
imsi += 1;
}
remain_time[i] = imsi;
}
//System.out.println(Arrays.toString(remain_time));
ArrayList <Integer> answer = new ArrayList <>();
for(int i = 0; i < remain_time.length; i = i + 1) {
int imsi = 0;
for(int j = i; j < remain_time.length; j = j + 1) {
if(remain_time[i] >= remain_time[j]) {
imsi += 1;
}else if(remain_time[i] < remain_time[j]) {
break;
}
}
i = i + (imsi - 1);
answer.add(imsi);
}
return answer;
}
}
3. 다른 사람 풀이
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] dayOfend = new int[100];
int day = -1;
for(int i=0; i<progresses.length; i++) {
while(progresses[i] + (day*speeds[i]) < 100) {
day++;
}
dayOfend[day]++;
}
return Arrays.stream(dayOfend).filter(i -> i!=0).toArray();
}
}