티스토리 뷰
1.문제
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
2.제한사항
- 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
- 작업 진도는 100 미만의 자연수입니다.
- 작업 속도는 100 이하의 자연수입니다.
- 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.
3.입출력 예
첫 번째 기능은 93% 완료되어 있고 하루에 1%씩 작업이 가능하므로 7일간 작업 후 배포가 가능합니다.
두 번째 기능은 30%가 완료되어 있고 하루에 30%씩 작업이 가능하므로 3일간 작업 후 배포가 가능합니다. 하지만 이전 첫 번째 기능이 아직 완성된 상태가 아니기 때문에 첫 번째 기능이 배포되는 7일째 배포됩니다.
세 번째 기능은 55%가 완료되어 있고 하루에 5%씩 작업이 가능하므로 9일간 작업 후 배포가 가능합니다.
따라서 7일째에 2개의 기능, 9일째에 1개의 기능이 배포됩니다.
4.나의 풀이
function solution(progresses, speeds) {
var answer = [];
let remainProgress;
let cost = 0;
let biggestCost = 0;
progresses.forEach((progress, i) => {
// 남은 프로세스의 양을 구한다.
remainProgress = 100 - progress;
// 현재 프로세스의 작업 진도가 100이 달성되는 최소 소요 일수를 구한다.
cost = Math.ceil( remainProgress / speeds[i] );
/**
* 현재 프로세스의 소요 일수가 이전에 개발이 완료된 기능의 소요 일수보다 크다면
* 배포 순서를 추가한다.
*/
if( biggestCost < cost ){
biggestCost = cost;
answer.push(1);
} else {
answer[ answer.length - 1 ] += 1;
}
});
return answer;
}
'컴퓨터 공학 > 알고리즘' 카테고리의 다른 글
[프로그래머스][해시]완주하지 못한 선수 (0) | 2019.08.07 |
---|---|
[프로그래머스][스택/큐]주식가격 (0) | 2019.08.06 |
[프로그래머스][스택/큐]다리를 지나는 트럭 (0) | 2019.08.06 |
[프로그래머스][스택/큐]쇠막대기 (0) | 2019.08.06 |
[프로그래머스][스택/큐]탑 (0) | 2019.08.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CRP 최적화
- graphql
- Docker
- 프로그래머스
- CI
- Nashorn
- CD
- PostgreSQL
- 동적계획법
- execution context
- Kubernetes
- Jenkins
- Spring Boot
- 프로그래머스[해시]
- 웹 사이트 최적화
- Apollo
- 실행 문맥
- react
- JPA
- Web
- Pipeline
- 프로그래머스[스택/큐]
- 프로그래머스[힙]
- 프로그래머스[정렬]
- 프로그래머스[Lv1]
- typescript
- javascript
- Handshake
- 프로그래머스[이분탐색]
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함