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();
}
}
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
(Java)프로그래머스 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 3진법 뒤집기 (0) | 2020.11.10 |
---|---|
(Java)프로그래머스 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 내적 (0) | 2020.11.10 |
(Java)프로그래머스 코딩테스트 연습 - 월간 코드 챌린지 시즌1 - 쿼드압축 후 개수 세기 (0) | 2020.11.01 |
(Java)프로그래머스 코딩테스트 연습 - 완전탐색 - 카펫 (0) | 2020.10.30 |
(Java)프로그래머스 코딩테스트 연습 - 깊이/너비 우선 탐색(DFS/BFS) - 타겟 넘버 (0) | 2020.10.30 |