본문 바로가기

알고리즘 문제풀이

[프로그래머스] 고득점 키트 - 스택/큐1

오늘 푼 문제

 

1. 기능개발 / Lv.2 / 시간 : 24분

programmers.co.kr/learn/courses/30/lessons/42586?language=javascript

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

// 1차
function solution(progresses, speeds) {
    var answer = [];
    const len = progresses.length;
    
    const days = progresses.reduce((acc,cur,i)=>{
        const day = Math.ceil((100-cur)/speeds[i]);
        acc.push(day);
        return acc;
    },[]);
    
    let target = 0;
    
    days.reduce((acc,cur,i)=>{
        if(cur>target){
            target = cur;
            acc.push(1);
        }else{
            acc[acc.length-1]++;
        }
        return acc;
    },answer);
        
    return answer;
}

//2차 
function solution(progresses, speeds) {
    var answer = [];
    let index = 0;
    let cnt = 0;
    let day = 0;
    while(progresses.length){
        const target = progresses.shift();
        day= Math.ceil((100-target)/speeds[index]);
        answer[cnt] = 1;
        
        index++
        while(progresses[0]+day*speeds[index]>=100){
            progresses.shift();
            index++;
            answer[cnt]++;
        }
        cnt++;
    }
    return answer;
}