https://programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 ��
programmers.co.kr
문제설명 : 진도가 적힌 progresses와 개발 속도가 적힌 배열 speeds가 주어질 때 각 배포마다 몇개의 기능이 배포되는지 구하기 진도가 100%일 때 서비스에 반영할 수 있다. 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발 될 수 있지만 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다. 진도율이 95%인 작업의 개발 속도가 4%라면 배포는 2일 뒤에 이루어진다. 문제풀이 : 100- 진도를 하고 나온 수를 개발속도로 나누면 며칠 뒤에 배포하는지 알 수 있다. 주의할 점은 나머지가 있을 떄는 하루 더 늘려줘야한다. 몰랐던 점: 처음에 정렬을 해서 풀었는데 그게 아니라 순서대로 처리해줘야한다. 반복하면서 다음 인덱스로 가고 싶을 때 day를 갱신하면 다음 차례로 가서 답을 구할 수 있다. |
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] arr = new int[progresses.length];
ArrayList list = new ArrayList();
for (int i = 0; i < progresses.length; i++) {
progresses[i] = 100-progresses[i];
arr[i] = progresses[i]/speeds[i];
if(progresses[i]%speeds[i]!=0) {
arr[i] = (progresses[i]/speeds[i])+1;
}
}
int cnt = 1;
int day = arr[0];
for (int i = 1; i < arr.length; i++) {
if(day>= arr[i]) {
cnt++;
}else {
list.add(cnt);
day = arr[i];
cnt = 1;
}
}
list.add(cnt);
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = (int) list.get(i);
}
return answer;
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[백준] 2644번 촌수계산 (0) | 2020.06.26 |
---|---|
[프로그래머스] 전화번호 목록 (0) | 2020.06.20 |
[프로그래머스] 124 나라의 숫자 (0) | 2020.06.18 |
[프로그래머스] 가장 큰 수 (0) | 2020.05.18 |
[SWEA] 6719. 성수의 프로그래밍 강좌 시청 (0) | 2020.05.17 |