코딩테스트 문제
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 접근)
개발속도가 다르고, 배포시에 몇개의 기능이 배포되는지를 묻는 문제이므로, 스택의 알고리즘 접근법으로 해결하면 됩니다.
정답 및 해설
정답 및 해설
function solution(progresses, speeds) {
let answer = [0]; // 결과값 저장할 변수
// 작업 후 배포 가능한 날짜 구하기
const remainDays = progresses.map((progress, idx) => Math.ceil((100 - progress) / speeds[idx]))
// 비교할 대상 날짜 하나 꺼내서 저장.
let peekDay = remainDays[0];
for (let i = 0, j = 0; i < progresses.length; i++) {
if (remainDays[i] <= peekDay) { // 처음 비교할 대상 날짜보다 일수가 적은것들이 한번에 배포되므로 고른 날짜보다 적으면 갯수 1씩 증가
answer[j] += 1;
} else { // 비교할 대상보다 크면 배포가 안됐으므로 +1 인덱스에서 +1 추가
answer[++j] = 1;
peekDay = remainDays[i];
}
}
return answer;
}