Link : programmers.co.kr/learn/courses/30/lessons/42586
1. 문제
- 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
2. 문제의 조건
- 작업 갯수 <= 100
- 작업 진도 < 100
- 작업 속도 <= 100
더보기
3. 문제 접근
- 시간 복잡도
추후 보강
- 아이디어
하루에 단 한번만 배포가 가능하지만, 만약 2~번째 작업이 배포 준비가 되어도 1번째 배포 작업이 준비가 안되면 2~은 대기할 수 밖에 없습니다. 그러므로 모든 진행률에 진행속도를 더하여 0번째 작업이 100이 될 때 까지 반복하며 pop하는 아이디어입니다.
4. 풀이 방법
- 모든 progresses에 각 작업의 speeds를 모두 더해줍니다.
- 현재의 0번째부터 작업이 완료 된 것이 있으면 stack에 추가하는데, 100퍼가 안되어있다면 break로 바로 탈출합니다.
(이후 작업이 100이 되어도 현재 작업이 끝나지 않으면 배포가 안된다는 가정 떄문) - 만약 배포 할 작업이 있으면 각각의 배포 정보를 삭제하고 삭제된 stack의 수를 넣어줍니다.
현재 소스에선 reverse 후 pop을 이용하는데, reverse를 안 할 경우, idx 1, 2를 삭제 할 경우 [1,2,3]
idx1인 2가 삭제 되면 [1,3]이 남고 pop(2) 를 하면 out of range Exception이 발생하므로 사용자의 역량에 맞춰 수정하셔도 됩니다.
5. 소스코드
cjw.git@gmail.com
'알고리즘 > programmers' 카테고리의 다른 글
42885: 구명보트[그리디] (0) | 2021.01.05 |
---|---|
42583: 다리를 지나는 트럭[스택/큐] (0) | 2021.01.05 |
42584: 주식가격[스택/큐] (0) | 2021.01.05 |
42579: 베스트앨범[해시] (0) | 2021.01.05 |
42578: 위장[해시] (0) | 2021.01.05 |
댓글