💡 유형: 스택/큐
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
구현
<조건>
- 각 기능의 개발속도는 모두 다르다.
- 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다.
- progresses: 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열
- speeds: 각 작업의 개발 속도가 적힌 정수 배열
- 구하는 것: 각 배포마다 몇 개의 기능이 배포되는지
1. 각 작업마다 100%까지 작업량을 구하여 큐(days)에 삽입한다.
2. 첫 번째 작업이 완료될 때, 같이 배포할 수 있는 작업들을 큐에서 꺼내면서(shift()) 카운트한다.
=> 같이 배포할 작업들: 첫 번째 작업보다 일찍 끝나는(작업량이 작은) 작업들
3. 한 번에 몇 개의 기능이 배포되는지 deploy 배열에 저장한다.
풀이
function solution(progresses, speeds) {
let deploy = [];
const days = progresses.map((progress,idx)=> Math.ceil((100-progress)/speeds[idx])); //각 작업이 완료되기까지 걸리는 날짜
while(days.length>0){
let count = 1;
let first = days.shift();
while(days.length>0 && days[0] <= first){
days.shift();
count++;
}
//배포
deploy.push(count);
}
return deploy;
}
큐 자료구조를 사용하는 것이 익숙하지 않아 오래 걸렸다. 레벨 1부터 풀어보아야겠다.
'알고리즘 > 자료구조' 카테고리의 다른 글
Javascript에서 인접리스트 구현하기 (1) | 2025.03.06 |
---|---|
[백준] 2346번: 풍선 터뜨리기 (실버 3) - Javascript 풀이 (시간초과) (0) | 2025.02.27 |
[백준] 1158번 : 요세푸스 문제 (실버 4) - Javascript 풀이 (1) | 2025.02.11 |
[백준] 2164번: 카드2 (실버4) - Javascript 풀이 (0) | 2025.02.09 |
[프로그래머스] Lv 2. 올바른 괄호 - Javascript 풀이 (0) | 2025.02.07 |