프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
코드풀이
1. 작업(progresses)이 속도(speeds)와 같은 배열의 크기와 같은 인덱스를 가지고 있기때문에 작업이 100이 될때까지 speed를 더해준다
2. 더한 값은 작업이 완료되는데 필요한 일자이므로 그 값을 temp Queue에 add()한다.
3. 각날마다 완료된 작업의 갯수를 구하기 위해 temp Queue가 빌때까지 반복한다
4. 만약 완료된 작업의 일자가(temp의 poll()) 다음작업보다 크거나 같으면 다음 작업도 poll()한다.
5. 4번이 진행될때마다 완료된 작업 (int x)를 ++한다
6. 그후 정답 리스트에 완료된날의 작업의 갯수를 넣어준다
.png)
트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다.
solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length, 다리가 견딜 수 있는 무게 weight, 트럭 별 무게 truck_weights가 주어집니다. 이때 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 return 하도록 solution 함수를 완성하세요.
코드풀이
1. 첫 트럭은 무조건 0초에서 bridge_length만큼 움직이기때문에 answer에 추가해놓는다
2. nowBridge(지금 지나는 트럭)이 비어있다면 트럭의 무게를 nowBridge에 add()하고, nowWeight 추가한다.
3. 트럭이 다 지난다면 nowBridge의 크기가 다리 길이와 동일하므로 nowBridge에서 poll()하면서 nowWeight에서도 빼준다
4. nowBridge가 비어있지 않고 지나가야할 트럭이 nowWeight와 더했을때 제한무게보다 초과된경우 nowBridge에 0을 넣어 시간이 흐름을 알려준다.
5. nowBridge가 비어있지 않고 지나가야할 트럭이 nowWeight와 더했을때 초과되지 않는다면 트럭의 무게를 nowBridge에 add()하고, nowWeight 추가한다.
6. 이를 지나가야할 트럭배열(truck_weights)만큼 반복한다
.png)