문제
https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=javascript
풀이
큐로 풀었다.
- 기능개발에 걸리는 기간은 Math.ceil((100 - progresses[0]) / speeds[0])
- 맨 앞에 있는게 안 나가면 뒤에는 맨 앞 날짜보다 작거나 같은 날짜가 계속 쌓이게 된다.
- 날짜 배열의 [0]번보다 큰 날짜가 나온다면 그동안의 기능들을 다 배포하게 되는데, 개발한 기능의 개수를 세주고 날짜 배열을 비우고, 새로운 날짜 기준부터 다시 시작한다.
function solution(progresses, speeds) {
const answer = [];
let dates = [Math.ceil((100 - progresses[0]) / speeds[0])];
if(progresses.length === 1) {
return [1];
}
for(let i = 1; i < progresses.length; i++) {
let date = Math.ceil((100 - progresses[i]) / speeds[i]);
if(dates[0] >= date) {
dates.push(date);
} else {
answer.push(dates.length);
dates = [date];
}
if(i === progresses.length - 1 && dates.length > 0) {
answer.push(dates.length);
}
}
return answer;
}
'알고리즘 이론 & 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv.2 | 괄호 회전하기 js (0) | 2023.08.11 |
---|---|
프로그래머스 Lv.2 | 피보나치 수 js (0) | 2023.08.09 |
프로그래머스 Lv.1 | (스택/큐) 같은 숫자는 싫어 js (0) | 2023.08.09 |
프로그래머스 Lv.2 | (DFS) 타겟 넘버 js (0) | 2023.08.09 |
프로그래머스 Lv.1 | (완전탐색) 모의고사 js (0) | 2023.08.09 |